@amalgm/core 0.1.4 → 0.1.5

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/PURPOSE.md CHANGED
@@ -87,6 +87,10 @@ source until each module is cut over.
87
87
  the host supplies the native spawn, path, clock, randomness, and timer
88
88
  effects. A reconnect attaches to the same process rather than creating
89
89
  hidden replacement state.
90
+ 15. **Diagnostics are bounded evidence, never a secret channel.** A diagnostic
91
+ read names one declared service, reads at most the configured tail bound,
92
+ and applies the shared redaction law before any content crosses the
93
+ gateway; arbitrary paths and unbounded files are not diagnostic inputs.
90
94
 
91
95
  ## Five surfaces, one behavior
92
96
 
@@ -0,0 +1,48 @@
1
+ /** Engine parity reference: amalgm-engine/runtime/scripts/local-gateway.js:77-96,427-560. */
2
+ export declare const DEFAULT_DIAGNOSTIC_LOG_TAIL_BYTES: number;
3
+ export declare const MAX_DIAGNOSTIC_LOG_TAIL_BYTES: number;
4
+ export declare const MAX_DIAGNOSTIC_LOG_LINES = 5000;
5
+ export declare const DIAGNOSTIC_LOG_FILES: {
6
+ readonly daemon: "daemon.log";
7
+ readonly 'chat-server': "chat-server.log";
8
+ readonly 'local-gateway': "local-gateway.log";
9
+ readonly 'amalgm-mcp': "amalgm-mcp.log";
10
+ readonly 'port-monitor': "port-monitor.log";
11
+ };
12
+ export declare const DIAGNOSTIC_LOG_ALIASES: Readonly<Record<string, DiagnosticLogService>>;
13
+ export type DiagnosticLogService = keyof typeof DIAGNOSTIC_LOG_FILES;
14
+ export interface DiagnosticLogTail {
15
+ readonly path: string;
16
+ readonly size: number;
17
+ readonly mtime: string;
18
+ readonly bytes: number;
19
+ readonly content: string;
20
+ readonly byteTruncated: boolean;
21
+ }
22
+ export type DiagnosticLogReadResult = {
23
+ readonly kind: 'found';
24
+ readonly tail: DiagnosticLogTail;
25
+ } | {
26
+ readonly kind: 'not_found';
27
+ readonly path: string;
28
+ } | {
29
+ readonly kind: 'not_file';
30
+ readonly path: string;
31
+ } | {
32
+ readonly kind: 'error';
33
+ readonly path: string;
34
+ readonly message: string;
35
+ };
36
+ export interface DiagnosticLogHost {
37
+ readTail(filename: string, maxBytes: number): Promise<DiagnosticLogReadResult>;
38
+ }
39
+ export declare function diagnosticLogServices(): DiagnosticLogService[];
40
+ export declare function normalizeDiagnosticLogService(value: unknown): string;
41
+ export declare function parseDiagnosticTailBytes(value: unknown): number;
42
+ export declare function parseDiagnosticLineLimit(value: unknown): number | null;
43
+ export declare function applyDiagnosticLineLimit(content: string, lineLimit: number | null): {
44
+ readonly content: string;
45
+ readonly lineTruncated: boolean;
46
+ };
47
+ export declare function createDiagnosticsApi(host: DiagnosticLogHost): (request: Request) => Promise<Response>;
48
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/transport/diagnostics.ts"],"names":[],"mappings":"AAEA,6FAA6F;AAC7F,eAAO,MAAM,iCAAiC,QAAa,CAAC;AAC5D,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAQjF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChF;AAED,wBAAgB,qBAAqB,IAAI,oBAAoB,EAAE,CAE9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKpE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAItE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAK/D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAiDrG"}
@@ -0,0 +1,106 @@
1
+ import { redactSecrets } from './admission.js';
2
+ /** Engine parity reference: amalgm-engine/runtime/scripts/local-gateway.js:77-96,427-560. */
3
+ export const DEFAULT_DIAGNOSTIC_LOG_TAIL_BYTES = 256 * 1024;
4
+ export const MAX_DIAGNOSTIC_LOG_TAIL_BYTES = 2 * 1024 * 1024;
5
+ export const MAX_DIAGNOSTIC_LOG_LINES = 5000;
6
+ export const DIAGNOSTIC_LOG_FILES = {
7
+ daemon: 'daemon.log',
8
+ 'chat-server': 'chat-server.log',
9
+ 'local-gateway': 'local-gateway.log',
10
+ 'amalgm-mcp': 'amalgm-mcp.log',
11
+ 'port-monitor': 'port-monitor.log',
12
+ };
13
+ export const DIAGNOSTIC_LOG_ALIASES = {
14
+ chat: 'chat-server',
15
+ mcp: 'amalgm-mcp',
16
+ gateway: 'local-gateway',
17
+ events: 'daemon',
18
+ 'event-tunnel': 'daemon',
19
+ 'chat-tunnel': 'daemon',
20
+ tunnel: 'daemon',
21
+ };
22
+ export function diagnosticLogServices() {
23
+ return Object.keys(DIAGNOSTIC_LOG_FILES);
24
+ }
25
+ export function normalizeDiagnosticLogService(value) {
26
+ let service = String(value || 'daemon').trim().toLowerCase();
27
+ if (service.endsWith('.log'))
28
+ service = service.slice(0, -4);
29
+ service = service.replace(/[^a-z0-9_-]/g, '');
30
+ return DIAGNOSTIC_LOG_ALIASES[service] || service;
31
+ }
32
+ export function parseDiagnosticTailBytes(value) {
33
+ const parsed = Number.parseInt(String(value || ''), 10);
34
+ if (!Number.isFinite(parsed) || parsed < 0)
35
+ return DEFAULT_DIAGNOSTIC_LOG_TAIL_BYTES;
36
+ return Math.min(parsed, MAX_DIAGNOSTIC_LOG_TAIL_BYTES);
37
+ }
38
+ export function parseDiagnosticLineLimit(value) {
39
+ const parsed = Number.parseInt(String(value || ''), 10);
40
+ if (!Number.isFinite(parsed) || parsed <= 0)
41
+ return null;
42
+ return Math.min(parsed, MAX_DIAGNOSTIC_LOG_LINES);
43
+ }
44
+ export function applyDiagnosticLineLimit(content, lineLimit) {
45
+ if (!lineLimit)
46
+ return { content, lineTruncated: false };
47
+ const lines = String(content).split(/\r?\n/);
48
+ if (lines.length <= lineLimit)
49
+ return { content, lineTruncated: false };
50
+ return { content: lines.slice(-lineLimit).join('\n'), lineTruncated: true };
51
+ }
52
+ export function createDiagnosticsApi(host) {
53
+ return async (request) => {
54
+ const url = new URL(request.url);
55
+ if (request.method === 'GET' && url.pathname === '/diagnostics') {
56
+ return json(200, {
57
+ service: 'diagnostics',
58
+ logs: diagnosticLogServices(),
59
+ defaultTailBytes: DEFAULT_DIAGNOSTIC_LOG_TAIL_BYTES,
60
+ maxTailBytes: MAX_DIAGNOSTIC_LOG_TAIL_BYTES,
61
+ maxLines: MAX_DIAGNOSTIC_LOG_LINES,
62
+ });
63
+ }
64
+ if (url.pathname !== '/diagnostics/logs')
65
+ return json(404, { error: 'Unknown diagnostics route' });
66
+ if (request.method !== 'GET') {
67
+ return new Response(null, { status: 405, headers: { allow: 'GET' } });
68
+ }
69
+ const service = normalizeDiagnosticLogService(url.searchParams.get('service') || url.searchParams.get('name'));
70
+ const filename = DIAGNOSTIC_LOG_FILES[service];
71
+ if (!filename) {
72
+ return json(400, {
73
+ error: 'Unknown diagnostic log service',
74
+ availableServices: diagnosticLogServices(),
75
+ });
76
+ }
77
+ const lineLimit = parseDiagnosticLineLimit(url.searchParams.get('lines'));
78
+ const result = await host.readTail(filename, parseDiagnosticTailBytes(url.searchParams.get('tailBytes')));
79
+ if (result.kind === 'not_found') {
80
+ return json(404, { service, path: result.path, exists: false, error: 'Diagnostic log file not found' });
81
+ }
82
+ if (result.kind === 'not_file') {
83
+ return json(400, { service, error: 'Diagnostic log path is not a file' });
84
+ }
85
+ if (result.kind === 'error')
86
+ return json(500, { service, error: result.message });
87
+ const limited = applyDiagnosticLineLimit(result.tail.content, lineLimit);
88
+ return json(200, {
89
+ service,
90
+ path: result.tail.path,
91
+ exists: true,
92
+ size: result.tail.size,
93
+ mtime: result.tail.mtime,
94
+ tailBytes: result.tail.bytes,
95
+ truncated: result.tail.byteTruncated || limited.lineTruncated,
96
+ content: redactSecrets(limited.content),
97
+ });
98
+ };
99
+ }
100
+ function json(status, body) {
101
+ return new Response(JSON.stringify(body), {
102
+ status,
103
+ headers: { 'content-type': 'application/json', 'cache-control': 'no-store' },
104
+ });
105
+ }
106
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/transport/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,iBAAiB;IAChC,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,kBAAkB;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAmD;IACpF,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,YAAY;IACjB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAuBF,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAA2B,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,sBAAsB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACrF,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,SAAwB;IAExB,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACxE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,GAAG,EAAE;gBACf,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,qBAAqB,EAAE;gBAC7B,gBAAgB,EAAE,iCAAiC;gBACnD,YAAY,EAAE,6BAA6B;gBAC3C,QAAQ,EAAE,wBAAwB;aACnC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,mBAAmB;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACnG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,OAAO,GAAG,6BAA6B,CAC3C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAChE,CAAC;QACF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAA+B,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,GAAG,EAAE;gBACf,KAAK,EAAE,gCAAgC;gBACvC,iBAAiB,EAAE,qBAAqB,EAAE;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,EAAE;YACf,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YAC5B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa;YAC7D,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,MAAc,EAAE,IAAa;IACzC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE;KAC7E,CAAC,CAAC;AACL,CAAC"}
@@ -18,6 +18,7 @@ export * from './routing.js';
18
18
  export * from './shipped-routes.js';
19
19
  export * from './state/index.js';
20
20
  export * from './pty/index.js';
21
+ export * from './diagnostics.js';
21
22
  export * from './admission.js';
22
23
  export * from './ingress.js';
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -18,6 +18,7 @@ export * from './routing.js';
18
18
  export * from './shipped-routes.js';
19
19
  export * from './state/index.js';
20
20
  export * from './pty/index.js';
21
+ export * from './diagnostics.js';
21
22
  export * from './admission.js';
22
23
  export * from './ingress.js';
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amalgm/core",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "The Amalgm kernel SDK — identity, transport, supervision, and host capability contracts behind host-injected adapters.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -36,6 +36,10 @@
36
36
  "types": "./dist/transport/pty/index.d.ts",
37
37
  "default": "./dist/transport/pty/index.js"
38
38
  },
39
+ "./diagnostics": {
40
+ "types": "./dist/transport/diagnostics.d.ts",
41
+ "default": "./dist/transport/diagnostics.js"
42
+ },
39
43
  "./supervision": {
40
44
  "types": "./dist/supervision/index.d.ts",
41
45
  "default": "./dist/supervision/index.js"