@a5c-ai/hooks-mux-core 5.0.1-staging.37ca18bd
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/api.d.ts +48 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +112 -0
- package/dist/api.js.map +1 -0
- package/dist/diagnostics/index.d.ts +4 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +14 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/logger.d.ts +89 -0
- package/dist/diagnostics/logger.d.ts.map +1 -0
- package/dist/diagnostics/logger.js +157 -0
- package/dist/diagnostics/logger.js.map +1 -0
- package/dist/diagnostics/trace.d.ts +56 -0
- package/dist/diagnostics/trace.d.ts.map +1 -0
- package/dist/diagnostics/trace.js +129 -0
- package/dist/diagnostics/trace.js.map +1 -0
- package/dist/diagnostics/types.d.ts +121 -0
- package/dist/diagnostics/types.d.ts.map +1 -0
- package/dist/diagnostics/types.js +8 -0
- package/dist/diagnostics/types.js.map +1 -0
- package/dist/discovery/detector.d.ts +29 -0
- package/dist/discovery/detector.d.ts.map +1 -0
- package/dist/discovery/detector.js +123 -0
- package/dist/discovery/detector.js.map +1 -0
- package/dist/discovery/index.d.ts +3 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +6 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/merge-engine/diagnostics.d.ts +80 -0
- package/dist/merge-engine/diagnostics.d.ts.map +1 -0
- package/dist/merge-engine/diagnostics.js +42 -0
- package/dist/merge-engine/diagnostics.js.map +1 -0
- package/dist/merge-engine/index.d.ts +3 -0
- package/dist/merge-engine/index.d.ts.map +1 -0
- package/dist/merge-engine/index.js +13 -0
- package/dist/merge-engine/index.js.map +1 -0
- package/dist/merge-engine/merge.d.ts +46 -0
- package/dist/merge-engine/merge.d.ts.map +1 -0
- package/dist/merge-engine/merge.js +276 -0
- package/dist/merge-engine/merge.js.map +1 -0
- package/dist/normalizer/errors.d.ts +32 -0
- package/dist/normalizer/errors.d.ts.map +1 -0
- package/dist/normalizer/errors.js +42 -0
- package/dist/normalizer/errors.js.map +1 -0
- package/dist/normalizer/index.d.ts +8 -0
- package/dist/normalizer/index.d.ts.map +1 -0
- package/dist/normalizer/index.js +25 -0
- package/dist/normalizer/index.js.map +1 -0
- package/dist/normalizer/normalize.d.ts +37 -0
- package/dist/normalizer/normalize.d.ts.map +1 -0
- package/dist/normalizer/normalize.js +113 -0
- package/dist/normalizer/normalize.js.map +1 -0
- package/dist/normalizer/plan-resolver.d.ts +46 -0
- package/dist/normalizer/plan-resolver.d.ts.map +1 -0
- package/dist/normalizer/plan-resolver.js +101 -0
- package/dist/normalizer/plan-resolver.js.map +1 -0
- package/dist/normalizer/runner.d.ts +57 -0
- package/dist/normalizer/runner.d.ts.map +1 -0
- package/dist/normalizer/runner.js +203 -0
- package/dist/normalizer/runner.js.map +1 -0
- package/dist/programmatic/engine.d.ts +88 -0
- package/dist/programmatic/engine.d.ts.map +1 -0
- package/dist/programmatic/engine.js +292 -0
- package/dist/programmatic/engine.js.map +1 -0
- package/dist/programmatic/index.d.ts +4 -0
- package/dist/programmatic/index.d.ts.map +1 -0
- package/dist/programmatic/index.js +7 -0
- package/dist/programmatic/index.js.map +1 -0
- package/dist/programmatic/middleware.d.ts +38 -0
- package/dist/programmatic/middleware.d.ts.map +1 -0
- package/dist/programmatic/middleware.js +10 -0
- package/dist/programmatic/middleware.js.map +1 -0
- package/dist/propagation/adapt-output.d.ts +9 -0
- package/dist/propagation/adapt-output.d.ts.map +1 -0
- package/dist/propagation/adapt-output.js +78 -0
- package/dist/propagation/adapt-output.js.map +1 -0
- package/dist/propagation/env-file.d.ts +24 -0
- package/dist/propagation/env-file.d.ts.map +1 -0
- package/dist/propagation/env-file.js +114 -0
- package/dist/propagation/env-file.js.map +1 -0
- package/dist/propagation/index.d.ts +6 -0
- package/dist/propagation/index.d.ts.map +1 -0
- package/dist/propagation/index.js +15 -0
- package/dist/propagation/index.js.map +1 -0
- package/dist/propagation/materialize.d.ts +10 -0
- package/dist/propagation/materialize.d.ts.map +1 -0
- package/dist/propagation/materialize.js +129 -0
- package/dist/propagation/materialize.js.map +1 -0
- package/dist/propagation/propagation-backends.d.ts +12 -0
- package/dist/propagation/propagation-backends.d.ts.map +1 -0
- package/dist/propagation/propagation-backends.js +100 -0
- package/dist/propagation/propagation-backends.js.map +1 -0
- package/dist/propagation/types.d.ts +69 -0
- package/dist/propagation/types.d.ts.map +1 -0
- package/dist/propagation/types.js +3 -0
- package/dist/propagation/types.js.map +1 -0
- package/dist/sdk-interface/builder.d.ts +66 -0
- package/dist/sdk-interface/builder.d.ts.map +1 -0
- package/dist/sdk-interface/builder.js +215 -0
- package/dist/sdk-interface/builder.js.map +1 -0
- package/dist/sdk-interface/context-reader.d.ts +27 -0
- package/dist/sdk-interface/context-reader.d.ts.map +1 -0
- package/dist/sdk-interface/context-reader.js +51 -0
- package/dist/sdk-interface/context-reader.js.map +1 -0
- package/dist/sdk-interface/errors.d.ts +9 -0
- package/dist/sdk-interface/errors.d.ts.map +1 -0
- package/dist/sdk-interface/errors.js +18 -0
- package/dist/sdk-interface/errors.js.map +1 -0
- package/dist/sdk-interface/index.d.ts +7 -0
- package/dist/sdk-interface/index.d.ts.map +1 -0
- package/dist/sdk-interface/index.js +25 -0
- package/dist/sdk-interface/index.js.map +1 -0
- package/dist/sdk-interface/parser.d.ts +26 -0
- package/dist/sdk-interface/parser.d.ts.map +1 -0
- package/dist/sdk-interface/parser.js +155 -0
- package/dist/sdk-interface/parser.js.map +1 -0
- package/dist/sdk-interface/serializer.d.ts +11 -0
- package/dist/sdk-interface/serializer.d.ts.map +1 -0
- package/dist/sdk-interface/serializer.js +17 -0
- package/dist/sdk-interface/serializer.js.map +1 -0
- package/dist/session-store/index.d.ts +5 -0
- package/dist/session-store/index.d.ts.map +1 -0
- package/dist/session-store/index.js +28 -0
- package/dist/session-store/index.js.map +1 -0
- package/dist/session-store/lock.d.ts +10 -0
- package/dist/session-store/lock.d.ts.map +1 -0
- package/dist/session-store/lock.js +110 -0
- package/dist/session-store/lock.js.map +1 -0
- package/dist/session-store/markers.d.ts +47 -0
- package/dist/session-store/markers.d.ts.map +1 -0
- package/dist/session-store/markers.js +348 -0
- package/dist/session-store/markers.js.map +1 -0
- package/dist/session-store/paths.d.ts +12 -0
- package/dist/session-store/paths.d.ts.map +1 -0
- package/dist/session-store/paths.js +67 -0
- package/dist/session-store/paths.js.map +1 -0
- package/dist/session-store/store.d.ts +29 -0
- package/dist/session-store/store.d.ts.map +1 -0
- package/dist/session-store/store.js +144 -0
- package/dist/session-store/store.js.map +1 -0
- package/dist/types/adapter.d.ts +21 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +3 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/event.d.ts +47 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +3 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/lifecycle.d.ts +36 -0
- package/dist/types/lifecycle.d.ts.map +1 -0
- package/dist/types/lifecycle.js +3 -0
- package/dist/types/lifecycle.js.map +1 -0
- package/dist/types/plan.d.ts +26 -0
- package/dist/types/plan.d.ts.map +1 -0
- package/dist/types/plan.js +3 -0
- package/dist/types/plan.js.map +1 -0
- package/dist/types/result.d.ts +26 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +3 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/session.d.ts +35 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +3 -0
- package/dist/types/session.js.map +1 -0
- package/package.json +33 -0
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic integration API.
|
|
3
|
+
*
|
|
4
|
+
* Spec section 19.2.
|
|
5
|
+
*/
|
|
6
|
+
import type { UnifiedHookEvent } from './types/event';
|
|
7
|
+
import type { AdapterCapabilities } from './types/adapter';
|
|
8
|
+
import type { HookPlanEntry } from './types/plan';
|
|
9
|
+
import { type MergedExecutionResult } from './merge-engine';
|
|
10
|
+
/**
|
|
11
|
+
* Implementation callbacks provided by an adapter.
|
|
12
|
+
*/
|
|
13
|
+
export interface AdapterImpl {
|
|
14
|
+
/** Normalize raw input into a UnifiedHookEvent. */
|
|
15
|
+
normalize(rawInput: unknown): UnifiedHookEvent;
|
|
16
|
+
/** Render a merged result into harness-native output. */
|
|
17
|
+
renderOutput?(mergedResult: MergedExecutionResult): unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A registered adapter with capabilities and implementation.
|
|
21
|
+
*/
|
|
22
|
+
export interface RegisteredAdapter {
|
|
23
|
+
name: string;
|
|
24
|
+
capabilities: AdapterCapabilities;
|
|
25
|
+
impl: AdapterImpl;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Register a new adapter with its capabilities and implementation.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createAdapter(name: string, capabilities: AdapterCapabilities, impl: AdapterImpl): RegisteredAdapter;
|
|
31
|
+
/**
|
|
32
|
+
* Register a handler in the global plan.
|
|
33
|
+
*/
|
|
34
|
+
export declare function registerHandler(planEntry: HookPlanEntry): void;
|
|
35
|
+
/**
|
|
36
|
+
* Run the full normalized pipeline: execute all matching handlers for
|
|
37
|
+
* the event's phase and return the merged result.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runNormalized(event: UnifiedHookEvent): Promise<MergedExecutionResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Get a registered adapter by name.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getAdapter(name: string): RegisteredAdapter | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Clear all registrations (useful for testing).
|
|
46
|
+
*/
|
|
47
|
+
export declare function clearRegistries(): void;
|
|
48
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAC/C,yDAAyD;IACzD,YAAY,CAAC,CAAC,YAAY,EAAE,qBAAqB,GAAG,OAAO,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,mBAAmB,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC;CACnB;AAaD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,mBAAmB,EACjC,IAAI,EAAE,WAAW,GAChB,iBAAiB,CAInB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAyBhC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Programmatic integration API.
|
|
4
|
+
*
|
|
5
|
+
* Spec section 19.2.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createAdapter = createAdapter;
|
|
42
|
+
exports.registerHandler = registerHandler;
|
|
43
|
+
exports.runNormalized = runNormalized;
|
|
44
|
+
exports.getAdapter = getAdapter;
|
|
45
|
+
exports.clearRegistries = clearRegistries;
|
|
46
|
+
const merge_engine_1 = require("./merge-engine");
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Internal registries
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
const adapterRegistry = new Map();
|
|
51
|
+
const handlerRegistry = [];
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Public API
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Register a new adapter with its capabilities and implementation.
|
|
57
|
+
*/
|
|
58
|
+
function createAdapter(name, capabilities, impl) {
|
|
59
|
+
const adapter = { name, capabilities, impl };
|
|
60
|
+
adapterRegistry.set(name, adapter);
|
|
61
|
+
return adapter;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Register a handler in the global plan.
|
|
65
|
+
*/
|
|
66
|
+
function registerHandler(planEntry) {
|
|
67
|
+
handlerRegistry.push(planEntry);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Run the full normalized pipeline: execute all matching handlers for
|
|
71
|
+
* the event's phase and return the merged result.
|
|
72
|
+
*/
|
|
73
|
+
async function runNormalized(event) {
|
|
74
|
+
const matchingEntries = handlerRegistry
|
|
75
|
+
.filter((e) => e.phase === event.phase)
|
|
76
|
+
.sort((a, b) => {
|
|
77
|
+
if (a.priority !== b.priority)
|
|
78
|
+
return a.priority - b.priority;
|
|
79
|
+
const sp = a.pluginId.localeCompare(b.pluginId);
|
|
80
|
+
if (sp !== 0)
|
|
81
|
+
return sp;
|
|
82
|
+
return a.id.localeCompare(b.id);
|
|
83
|
+
});
|
|
84
|
+
const results = [];
|
|
85
|
+
for (const entry of matchingEntries) {
|
|
86
|
+
// Handler.source is the shell command to execute as a child process.
|
|
87
|
+
const { runHandler } = await Promise.resolve().then(() => __importStar(require('./normalizer/runner')));
|
|
88
|
+
try {
|
|
89
|
+
const result = await runHandler(event, entry.handler);
|
|
90
|
+
results.push(result);
|
|
91
|
+
}
|
|
92
|
+
catch (_err) {
|
|
93
|
+
// Fail-open by default in programmatic API
|
|
94
|
+
results.push({ decision: 'noop', reason: 'handler error (fail-open)' });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return (0, merge_engine_1.mergeResults)(results);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get a registered adapter by name.
|
|
101
|
+
*/
|
|
102
|
+
function getAdapter(name) {
|
|
103
|
+
return adapterRegistry.get(name);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clear all registrations (useful for testing).
|
|
107
|
+
*/
|
|
108
|
+
function clearRegistries() {
|
|
109
|
+
adapterRegistry.clear();
|
|
110
|
+
handlerRegistry.length = 0;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCH,sCAQC;AAKD,0CAEC;AAMD,sCA2BC;AAKD,gCAEC;AAKD,0CAGC;AAlGD,iDAA0E;AAqB1E,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,IAAI,GAAG,EAA6B,CAAC;AAC7D,MAAM,eAAe,GAAoB,EAAE,CAAC;AAE5C,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;GAEG;AACH,SAAgB,aAAa,CAC3B,IAAY,EACZ,YAAiC,EACjC,IAAiB;IAEjB,MAAM,OAAO,GAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChE,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAwB;IACtD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,aAAa,CACjC,KAAuB;IAEvB,MAAM,eAAe,GAAG,eAAe;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;SACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,qEAAqE;QACrE,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACd,2CAA2C;YAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,IAAA,2BAAY,EAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { DiagnosticEntry, DiagnosticLoggerOptions, MergeDecisionSummary, SessionIdQuality, TraceWriterOptions, TraceRecord, TraceHandlerRecord, } from './types';
|
|
2
|
+
export { DiagnosticLogger, createDiagnosticLogger } from './logger';
|
|
3
|
+
export { TraceWriter, createTraceWriter, generateTraceId, buildTraceRecord, } from './trace';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGpE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildTraceRecord = exports.generateTraceId = exports.createTraceWriter = exports.TraceWriter = exports.createDiagnosticLogger = exports.DiagnosticLogger = void 0;
|
|
4
|
+
// Logger
|
|
5
|
+
var logger_1 = require("./logger");
|
|
6
|
+
Object.defineProperty(exports, "DiagnosticLogger", { enumerable: true, get: function () { return logger_1.DiagnosticLogger; } });
|
|
7
|
+
Object.defineProperty(exports, "createDiagnosticLogger", { enumerable: true, get: function () { return logger_1.createDiagnosticLogger; } });
|
|
8
|
+
// Trace
|
|
9
|
+
var trace_1 = require("./trace");
|
|
10
|
+
Object.defineProperty(exports, "TraceWriter", { enumerable: true, get: function () { return trace_1.TraceWriter; } });
|
|
11
|
+
Object.defineProperty(exports, "createTraceWriter", { enumerable: true, get: function () { return trace_1.createTraceWriter; } });
|
|
12
|
+
Object.defineProperty(exports, "generateTraceId", { enumerable: true, get: function () { return trace_1.generateTraceId; } });
|
|
13
|
+
Object.defineProperty(exports, "buildTraceRecord", { enumerable: true, get: function () { return trace_1.buildTraceRecord; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":";;;AAWA,SAAS;AACT,mCAAoE;AAA3D,0GAAA,gBAAgB,OAAA;AAAE,gHAAA,sBAAsB,OAAA;AAEjD,QAAQ;AACR,iCAKiB;AAJf,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured diagnostic logger for hooks-mux execution.
|
|
3
|
+
*
|
|
4
|
+
* Outputs to stderr with structured fields per spec section 23:
|
|
5
|
+
* adapter, canonical phase, native event name, session ID quality,
|
|
6
|
+
* handler IDs executed, merge decisions, output degradation flags.
|
|
7
|
+
*/
|
|
8
|
+
import type { DiagnosticEntry, DiagnosticLoggerOptions, MergeDecisionSummary, SessionIdQuality } from './types';
|
|
9
|
+
declare const LOG_LEVELS: {
|
|
10
|
+
readonly debug: 0;
|
|
11
|
+
readonly info: 1;
|
|
12
|
+
readonly warn: 2;
|
|
13
|
+
readonly error: 3;
|
|
14
|
+
};
|
|
15
|
+
type LogLevel = keyof typeof LOG_LEVELS;
|
|
16
|
+
/**
|
|
17
|
+
* Structured logger that emits diagnostics to stderr (or a custom stream).
|
|
18
|
+
*
|
|
19
|
+
* Separates diagnostic output (stderr) from hook output (stdout) per
|
|
20
|
+
* the security requirement in spec section 22.
|
|
21
|
+
*/
|
|
22
|
+
export declare class DiagnosticLogger {
|
|
23
|
+
private readonly minLevel;
|
|
24
|
+
private readonly output;
|
|
25
|
+
private readonly json;
|
|
26
|
+
private adapter;
|
|
27
|
+
private canonicalPhase;
|
|
28
|
+
private nativeEventName;
|
|
29
|
+
private sessionIdQuality;
|
|
30
|
+
private sessionId;
|
|
31
|
+
private handlerIds;
|
|
32
|
+
private mergeDecisions;
|
|
33
|
+
private outputDegradationFlags;
|
|
34
|
+
constructor(options?: DiagnosticLoggerOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Set the adapter context for subsequent log entries.
|
|
37
|
+
*/
|
|
38
|
+
setAdapter(adapter: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Set the phase context for subsequent log entries.
|
|
41
|
+
*/
|
|
42
|
+
setPhase(canonicalPhase: string, nativeEventName: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Set session context for subsequent log entries.
|
|
45
|
+
*/
|
|
46
|
+
setSession(sessionId: string | undefined, quality: SessionIdQuality): void;
|
|
47
|
+
/**
|
|
48
|
+
* Record the handler IDs that were executed.
|
|
49
|
+
*/
|
|
50
|
+
setHandlerIds(ids: string[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* Record merge decisions from the fan-out merge phase.
|
|
53
|
+
*/
|
|
54
|
+
setMergeDecisions(decisions: MergeDecisionSummary[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* Record output degradation flags.
|
|
57
|
+
*/
|
|
58
|
+
setOutputDegradationFlags(flags: string[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Emit a debug-level diagnostic.
|
|
61
|
+
*/
|
|
62
|
+
debug(message: string, extra?: Record<string, unknown>): void;
|
|
63
|
+
/**
|
|
64
|
+
* Emit an info-level diagnostic.
|
|
65
|
+
*/
|
|
66
|
+
info(message: string, extra?: Record<string, unknown>): void;
|
|
67
|
+
/**
|
|
68
|
+
* Emit a warn-level diagnostic.
|
|
69
|
+
*/
|
|
70
|
+
warn(message: string, extra?: Record<string, unknown>): void;
|
|
71
|
+
/**
|
|
72
|
+
* Emit an error-level diagnostic.
|
|
73
|
+
*/
|
|
74
|
+
error(message: string, extra?: Record<string, unknown>): void;
|
|
75
|
+
/**
|
|
76
|
+
* Build and return a DiagnosticEntry without emitting it.
|
|
77
|
+
* Useful for testing or collecting entries.
|
|
78
|
+
*/
|
|
79
|
+
buildEntry(level: LogLevel, message: string, extra?: Record<string, unknown>): DiagnosticEntry;
|
|
80
|
+
private emit;
|
|
81
|
+
private formatHuman;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a DiagnosticLogger with default settings.
|
|
85
|
+
* Intended for use by the invoke pipeline.
|
|
86
|
+
*/
|
|
87
|
+
export declare function createDiagnosticLogger(options?: DiagnosticLoggerOptions): DiagnosticLogger;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/diagnostics/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,QAAA,MAAM,UAAU;;;;;CAAoD,CAAC;AACrE,KAAK,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAExC;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAG/B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,sBAAsB,CAAgB;gBAElC,OAAO,CAAC,EAAE,uBAAuB;IAM7C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAK/D;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAK1E;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAI1D;;OAEG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7D;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAiB9F,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,WAAW;CAoBpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,gBAAgB,CAE1F"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Structured diagnostic logger for hooks-mux execution.
|
|
4
|
+
*
|
|
5
|
+
* Outputs to stderr with structured fields per spec section 23:
|
|
6
|
+
* adapter, canonical phase, native event name, session ID quality,
|
|
7
|
+
* handler IDs executed, merge decisions, output degradation flags.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DiagnosticLogger = void 0;
|
|
11
|
+
exports.createDiagnosticLogger = createDiagnosticLogger;
|
|
12
|
+
const LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
13
|
+
/**
|
|
14
|
+
* Structured logger that emits diagnostics to stderr (or a custom stream).
|
|
15
|
+
*
|
|
16
|
+
* Separates diagnostic output (stderr) from hook output (stdout) per
|
|
17
|
+
* the security requirement in spec section 22.
|
|
18
|
+
*/
|
|
19
|
+
class DiagnosticLogger {
|
|
20
|
+
minLevel;
|
|
21
|
+
output;
|
|
22
|
+
json;
|
|
23
|
+
// Contextual fields set once and reused across log calls within one invocation.
|
|
24
|
+
adapter = '';
|
|
25
|
+
canonicalPhase = '';
|
|
26
|
+
nativeEventName = '';
|
|
27
|
+
sessionIdQuality = 'none';
|
|
28
|
+
sessionId;
|
|
29
|
+
handlerIds = [];
|
|
30
|
+
mergeDecisions = [];
|
|
31
|
+
outputDegradationFlags = [];
|
|
32
|
+
constructor(options) {
|
|
33
|
+
this.minLevel = LOG_LEVELS[options?.level ?? 'info'];
|
|
34
|
+
this.output = options?.output ?? process.stderr;
|
|
35
|
+
this.json = options?.json ?? true;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the adapter context for subsequent log entries.
|
|
39
|
+
*/
|
|
40
|
+
setAdapter(adapter) {
|
|
41
|
+
this.adapter = adapter;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set the phase context for subsequent log entries.
|
|
45
|
+
*/
|
|
46
|
+
setPhase(canonicalPhase, nativeEventName) {
|
|
47
|
+
this.canonicalPhase = canonicalPhase;
|
|
48
|
+
this.nativeEventName = nativeEventName;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Set session context for subsequent log entries.
|
|
52
|
+
*/
|
|
53
|
+
setSession(sessionId, quality) {
|
|
54
|
+
this.sessionId = sessionId;
|
|
55
|
+
this.sessionIdQuality = quality;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Record the handler IDs that were executed.
|
|
59
|
+
*/
|
|
60
|
+
setHandlerIds(ids) {
|
|
61
|
+
this.handlerIds = ids;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Record merge decisions from the fan-out merge phase.
|
|
65
|
+
*/
|
|
66
|
+
setMergeDecisions(decisions) {
|
|
67
|
+
this.mergeDecisions = decisions;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Record output degradation flags.
|
|
71
|
+
*/
|
|
72
|
+
setOutputDegradationFlags(flags) {
|
|
73
|
+
this.outputDegradationFlags = flags;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emit a debug-level diagnostic.
|
|
77
|
+
*/
|
|
78
|
+
debug(message, extra) {
|
|
79
|
+
this.emit('debug', message, extra);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Emit an info-level diagnostic.
|
|
83
|
+
*/
|
|
84
|
+
info(message, extra) {
|
|
85
|
+
this.emit('info', message, extra);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Emit a warn-level diagnostic.
|
|
89
|
+
*/
|
|
90
|
+
warn(message, extra) {
|
|
91
|
+
this.emit('warn', message, extra);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Emit an error-level diagnostic.
|
|
95
|
+
*/
|
|
96
|
+
error(message, extra) {
|
|
97
|
+
this.emit('error', message, extra);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Build and return a DiagnosticEntry without emitting it.
|
|
101
|
+
* Useful for testing or collecting entries.
|
|
102
|
+
*/
|
|
103
|
+
buildEntry(level, message, extra) {
|
|
104
|
+
return {
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
level,
|
|
107
|
+
message,
|
|
108
|
+
adapter: this.adapter,
|
|
109
|
+
canonicalPhase: this.canonicalPhase,
|
|
110
|
+
nativeEventName: this.nativeEventName,
|
|
111
|
+
sessionIdQuality: this.sessionIdQuality,
|
|
112
|
+
sessionId: this.sessionId,
|
|
113
|
+
handlerIds: [...this.handlerIds],
|
|
114
|
+
mergeDecisions: [...this.mergeDecisions],
|
|
115
|
+
outputDegradationFlags: [...this.outputDegradationFlags],
|
|
116
|
+
extra,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
emit(level, message, extra) {
|
|
120
|
+
if (LOG_LEVELS[level] < this.minLevel)
|
|
121
|
+
return;
|
|
122
|
+
const entry = this.buildEntry(level, message, extra);
|
|
123
|
+
if (this.json) {
|
|
124
|
+
this.output.write(JSON.stringify(entry) + '\n');
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.output.write(this.formatHuman(entry) + '\n');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
formatHuman(entry) {
|
|
131
|
+
const parts = [
|
|
132
|
+
`[${entry.level.toUpperCase()}]`,
|
|
133
|
+
`[${entry.adapter || '-'}]`,
|
|
134
|
+
`[${entry.canonicalPhase || '-'}]`,
|
|
135
|
+
entry.message,
|
|
136
|
+
];
|
|
137
|
+
if (entry.sessionId) {
|
|
138
|
+
parts.push(`session=${entry.sessionId}`);
|
|
139
|
+
}
|
|
140
|
+
if (entry.handlerIds.length > 0) {
|
|
141
|
+
parts.push(`handlers=[${entry.handlerIds.join(',')}]`);
|
|
142
|
+
}
|
|
143
|
+
if (entry.outputDegradationFlags.length > 0) {
|
|
144
|
+
parts.push(`degraded=[${entry.outputDegradationFlags.join(',')}]`);
|
|
145
|
+
}
|
|
146
|
+
return parts.join(' ');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.DiagnosticLogger = DiagnosticLogger;
|
|
150
|
+
/**
|
|
151
|
+
* Create a DiagnosticLogger with default settings.
|
|
152
|
+
* Intended for use by the invoke pipeline.
|
|
153
|
+
*/
|
|
154
|
+
function createDiagnosticLogger(options) {
|
|
155
|
+
return new DiagnosticLogger(options);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/diagnostics/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional JSONL trace file support for debugging.
|
|
3
|
+
*
|
|
4
|
+
* Spec section 23 (optional future support: JSONL trace files).
|
|
5
|
+
*
|
|
6
|
+
* When enabled, writes one JSON line per hook invocation to a trace file.
|
|
7
|
+
* Useful for post-hoc debugging of hook execution sequences.
|
|
8
|
+
*/
|
|
9
|
+
import type { TraceRecord, TraceWriterOptions, TraceHandlerRecord, SessionIdQuality } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Writer that appends JSONL trace records to a file.
|
|
12
|
+
*/
|
|
13
|
+
export declare class TraceWriter {
|
|
14
|
+
private readonly filePath;
|
|
15
|
+
private readonly append;
|
|
16
|
+
private initialized;
|
|
17
|
+
constructor(options: TraceWriterOptions);
|
|
18
|
+
/**
|
|
19
|
+
* Ensure the trace directory exists and the file is ready for writing.
|
|
20
|
+
*/
|
|
21
|
+
private ensureInitialized;
|
|
22
|
+
/**
|
|
23
|
+
* Write a trace record as a single JSONL line.
|
|
24
|
+
*/
|
|
25
|
+
writeRecord(record: TraceRecord): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Get the trace file path.
|
|
28
|
+
*/
|
|
29
|
+
getFilePath(): string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a trace writer. Returns null if no trace file path is configured.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createTraceWriter(options?: TraceWriterOptions | null): TraceWriter | null;
|
|
35
|
+
/**
|
|
36
|
+
* Generate a simple trace ID for this invocation.
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateTraceId(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Build a complete TraceRecord from invocation data.
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildTraceRecord(params: {
|
|
43
|
+
traceId: string;
|
|
44
|
+
startedAt: string;
|
|
45
|
+
completedAt: string;
|
|
46
|
+
adapter: string;
|
|
47
|
+
phase: string;
|
|
48
|
+
nativeEventName: string;
|
|
49
|
+
sessionIdQuality: SessionIdQuality;
|
|
50
|
+
sessionId?: string;
|
|
51
|
+
handlers: TraceHandlerRecord[];
|
|
52
|
+
mergedDecision: string;
|
|
53
|
+
degraded: boolean;
|
|
54
|
+
errors: string[];
|
|
55
|
+
}): TraceRecord;
|
|
56
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/diagnostics/trace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErG;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,kBAAkB;IAKvC;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAGzF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,WAAW,CAoBd"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Optional JSONL trace file support for debugging.
|
|
4
|
+
*
|
|
5
|
+
* Spec section 23 (optional future support: JSONL trace files).
|
|
6
|
+
*
|
|
7
|
+
* When enabled, writes one JSON line per hook invocation to a trace file.
|
|
8
|
+
* Useful for post-hoc debugging of hook execution sequences.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.TraceWriter = void 0;
|
|
45
|
+
exports.createTraceWriter = createTraceWriter;
|
|
46
|
+
exports.generateTraceId = generateTraceId;
|
|
47
|
+
exports.buildTraceRecord = buildTraceRecord;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
/**
|
|
51
|
+
* Writer that appends JSONL trace records to a file.
|
|
52
|
+
*/
|
|
53
|
+
class TraceWriter {
|
|
54
|
+
filePath;
|
|
55
|
+
append;
|
|
56
|
+
initialized = false;
|
|
57
|
+
constructor(options) {
|
|
58
|
+
this.filePath = options.filePath;
|
|
59
|
+
this.append = options.append ?? true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Ensure the trace directory exists and the file is ready for writing.
|
|
63
|
+
*/
|
|
64
|
+
async ensureInitialized() {
|
|
65
|
+
if (this.initialized)
|
|
66
|
+
return;
|
|
67
|
+
await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
68
|
+
if (!this.append) {
|
|
69
|
+
// Truncate if not appending
|
|
70
|
+
await fs.promises.writeFile(this.filePath, '', 'utf-8');
|
|
71
|
+
}
|
|
72
|
+
this.initialized = true;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Write a trace record as a single JSONL line.
|
|
76
|
+
*/
|
|
77
|
+
async writeRecord(record) {
|
|
78
|
+
await this.ensureInitialized();
|
|
79
|
+
const line = JSON.stringify(record) + '\n';
|
|
80
|
+
await fs.promises.appendFile(this.filePath, line, 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the trace file path.
|
|
84
|
+
*/
|
|
85
|
+
getFilePath() {
|
|
86
|
+
return this.filePath;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.TraceWriter = TraceWriter;
|
|
90
|
+
/**
|
|
91
|
+
* Create a trace writer. Returns null if no trace file path is configured.
|
|
92
|
+
*/
|
|
93
|
+
function createTraceWriter(options) {
|
|
94
|
+
if (!options)
|
|
95
|
+
return null;
|
|
96
|
+
return new TraceWriter(options);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Generate a simple trace ID for this invocation.
|
|
100
|
+
*/
|
|
101
|
+
function generateTraceId() {
|
|
102
|
+
const timestamp = Date.now().toString(36);
|
|
103
|
+
const random = Math.random().toString(36).slice(2, 8);
|
|
104
|
+
return `trace_${timestamp}_${random}`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build a complete TraceRecord from invocation data.
|
|
108
|
+
*/
|
|
109
|
+
function buildTraceRecord(params) {
|
|
110
|
+
const startMs = new Date(params.startedAt).getTime();
|
|
111
|
+
const endMs = new Date(params.completedAt).getTime();
|
|
112
|
+
return {
|
|
113
|
+
version: 'a5c.hooks.trace.v1',
|
|
114
|
+
traceId: params.traceId,
|
|
115
|
+
startedAt: params.startedAt,
|
|
116
|
+
completedAt: params.completedAt,
|
|
117
|
+
durationMs: endMs - startMs,
|
|
118
|
+
adapter: params.adapter,
|
|
119
|
+
phase: params.phase,
|
|
120
|
+
nativeEventName: params.nativeEventName,
|
|
121
|
+
sessionIdQuality: params.sessionIdQuality,
|
|
122
|
+
sessionId: params.sessionId,
|
|
123
|
+
handlers: params.handlers,
|
|
124
|
+
mergedDecision: params.mergedDecision,
|
|
125
|
+
degraded: params.degraded,
|
|
126
|
+
errors: params.errors,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/diagnostics/trace.ts"],"names":[],"mappings":"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"}
|