@caracalai/core 0.1.2 → 0.1.3-rc.1

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 (56) hide show
  1. package/dist/async.d.ts +2 -0
  2. package/dist/async.d.ts.map +1 -0
  3. package/dist/async.js +27 -0
  4. package/dist/async.js.map +1 -0
  5. package/dist/audit.d.ts +98 -0
  6. package/dist/audit.d.ts.map +1 -0
  7. package/dist/audit.js +213 -0
  8. package/dist/audit.js.map +1 -0
  9. package/dist/config.d.ts +3 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +46 -0
  12. package/dist/config.js.map +1 -1
  13. package/dist/crypto.d.ts +4 -0
  14. package/dist/crypto.d.ts.map +1 -1
  15. package/dist/crypto.js +12 -0
  16. package/dist/crypto.js.map +1 -1
  17. package/dist/env.d.ts +3 -3
  18. package/dist/env.d.ts.map +1 -1
  19. package/dist/env.js +11 -11
  20. package/dist/env.js.map +1 -1
  21. package/dist/envfile.d.ts +10 -1
  22. package/dist/envfile.d.ts.map +1 -1
  23. package/dist/envfile.js +90 -9
  24. package/dist/envfile.js.map +1 -1
  25. package/dist/errors.d.ts +4 -3
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js.map +1 -1
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +7 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/json.d.ts +7 -0
  33. package/dist/json.d.ts.map +1 -0
  34. package/dist/json.js +6 -0
  35. package/dist/json.js.map +1 -0
  36. package/dist/lifecycle.d.ts +17 -0
  37. package/dist/lifecycle.d.ts.map +1 -0
  38. package/dist/lifecycle.js +66 -0
  39. package/dist/lifecycle.js.map +1 -0
  40. package/dist/logging.d.ts +58 -3
  41. package/dist/logging.d.ts.map +1 -1
  42. package/dist/logging.js +292 -7
  43. package/dist/logging.js.map +1 -1
  44. package/dist/metrics.d.ts +4 -0
  45. package/dist/metrics.d.ts.map +1 -0
  46. package/dist/metrics.js +43 -0
  47. package/dist/metrics.js.map +1 -0
  48. package/dist/telemetry.d.ts +10 -0
  49. package/dist/telemetry.d.ts.map +1 -0
  50. package/dist/telemetry.js +98 -0
  51. package/dist/telemetry.js.map +1 -0
  52. package/package.json +12 -8
  53. package/dist/cliconfig.d.ts +0 -31
  54. package/dist/cliconfig.d.ts.map +0 -1
  55. package/dist/cliconfig.js +0 -56
  56. package/dist/cliconfig.js.map +0 -1
package/dist/envfile.js CHANGED
@@ -3,7 +3,8 @@
3
3
  //
4
4
  // Helpers for reading dotenv files and discovering the Caracal admin token.
5
5
  import { existsSync, readFileSync } from 'node:fs';
6
- import { join } from 'node:path';
6
+ import { homedir, platform } from 'node:os';
7
+ import { dirname, join } from 'node:path';
7
8
  export function readEnvFile(path) {
8
9
  if (!existsSync(path))
9
10
  return {};
@@ -20,21 +21,101 @@ export function readEnvFile(path) {
20
21
  }
21
22
  return out;
22
23
  }
23
- export function discoverAdminToken(explicit) {
24
+ /**
25
+ * Resolve the installed home written to by `caracal up`.
26
+ * Mirrors the layout in packages/engine/src/runtime.ts.
27
+ */
28
+ export function installedHome() {
29
+ if (process.env.CARACAL_HOME)
30
+ return process.env.CARACAL_HOME;
31
+ if (platform() === 'darwin') {
32
+ return join(homedir(), 'Library', 'Application Support', 'caracal');
33
+ }
34
+ const xdg = process.env.XDG_DATA_HOME;
35
+ const base = xdg && xdg.length > 0 ? xdg : join(homedir(), '.local', 'share');
36
+ return join(base, 'caracal');
37
+ }
38
+ function readSecretFile(path) {
39
+ if (!existsSync(path))
40
+ return undefined;
41
+ const value = readFileSync(path, 'utf8').trim();
42
+ return value.length > 0 ? value : undefined;
43
+ }
44
+ function repoRoot() {
45
+ if (process.env.CARACAL_REPO_ROOT)
46
+ return process.env.CARACAL_REPO_ROOT;
47
+ let dir = process.cwd();
48
+ while (true) {
49
+ if (existsSync(join(dir, 'pnpm-workspace.yaml')) && existsSync(join(dir, 'infra', 'secrets', 'files'))) {
50
+ return dir;
51
+ }
52
+ const parent = dirname(dir);
53
+ if (parent === dir)
54
+ return undefined;
55
+ dir = parent;
56
+ }
57
+ }
58
+ function readGeneratedSecret(fileName) {
59
+ const root = repoRoot();
60
+ if (root) {
61
+ const dev = readSecretFile(join(root, 'infra', 'secrets', 'files', fileName));
62
+ if (dev)
63
+ return dev;
64
+ }
65
+ return readSecretFile(join(installedHome(), 'secrets', fileName));
66
+ }
67
+ export function discoverAdminToken(explicit, opts = {}) {
24
68
  if (explicit)
25
69
  return explicit;
70
+ if (opts.preferGenerated) {
71
+ const generated = readGeneratedSecret('caracalAdminToken');
72
+ if (generated)
73
+ return generated;
74
+ }
26
75
  if (process.env.CARACAL_ADMIN_TOKEN)
27
76
  return process.env.CARACAL_ADMIN_TOKEN;
28
- const candidates = [
29
- process.env.CARACAL_ENV_FILE,
30
- join(process.cwd(), 'infra', 'docker', '.env'),
31
- join(process.cwd(), '.env'),
32
- ].filter((p) => Boolean(p));
33
- for (const path of candidates) {
34
- const env = readEnvFile(path);
77
+ if (process.env.CARACAL_ADMIN_TOKEN_FILE) {
78
+ const value = readSecretFile(process.env.CARACAL_ADMIN_TOKEN_FILE);
79
+ if (value)
80
+ return value;
81
+ }
82
+ if (!opts.preferGenerated) {
83
+ const generated = readGeneratedSecret('caracalAdminToken');
84
+ if (generated)
85
+ return generated;
86
+ }
87
+ if (process.env.CARACAL_ENV_FILE) {
88
+ const env = readEnvFile(process.env.CARACAL_ENV_FILE);
35
89
  if (env.CARACAL_ADMIN_TOKEN)
36
90
  return env.CARACAL_ADMIN_TOKEN;
37
91
  }
38
92
  return undefined;
39
93
  }
94
+ export function discoverCoordinatorToken(explicit, opts = {}) {
95
+ if (explicit)
96
+ return explicit;
97
+ if (opts.preferGenerated) {
98
+ const generated = readGeneratedSecret('caracalCoordinatorToken');
99
+ if (generated)
100
+ return generated;
101
+ }
102
+ if (process.env.CARACAL_COORDINATOR_TOKEN)
103
+ return process.env.CARACAL_COORDINATOR_TOKEN;
104
+ if (process.env.CARACAL_COORDINATOR_TOKEN_FILE) {
105
+ const value = readSecretFile(process.env.CARACAL_COORDINATOR_TOKEN_FILE);
106
+ if (value)
107
+ return value;
108
+ }
109
+ if (!opts.preferGenerated) {
110
+ const generated = readGeneratedSecret('caracalCoordinatorToken');
111
+ if (generated)
112
+ return generated;
113
+ }
114
+ if (process.env.CARACAL_ENV_FILE) {
115
+ const env = readEnvFile(process.env.CARACAL_ENV_FILE);
116
+ if (env.CARACAL_COORDINATOR_TOKEN)
117
+ return env.CARACAL_COORDINATOR_TOKEN;
118
+ }
119
+ return undefined;
120
+ }
40
121
  //# sourceMappingURL=envfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envfile.js","sourceRoot":"","sources":["../src/envfile.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC5E,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;KAC5B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,mBAAmB;YAAE,OAAO,GAAG,CAAC,mBAAmB,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"envfile.js","sourceRoot":"","sources":["../src/envfile.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,17 +1,18 @@
1
+ import type { JsonObject } from './json.js';
1
2
  export type WellKnownErrorCode = 'access_denied' | 'invalid_token' | 'resource_not_found' | 'internal_error' | 'policy_eval_failed' | 'provider_rate_limited' | 'interaction_required' | 'sts_unavailable' | 'credential_expired_not_renewable' | 'payload_too_large' | 'zone_invalid' | 'scope_insufficient' | 'agent_identity_required' | 'delegation_required' | 'chain_mismatch' | 'hop_count_exceeded' | 'http_request_failed' | 'config_missing';
2
3
  export type ErrorCode = WellKnownErrorCode | (string & {});
3
4
  export interface CaracalErrorOptions {
4
5
  requestId?: string;
5
- details?: Record<string, unknown>;
6
+ details?: JsonObject;
6
7
  cause?: unknown;
7
8
  }
8
9
  export declare class CaracalError extends Error {
9
10
  readonly code: ErrorCode;
10
11
  readonly requestId?: string;
11
- readonly details?: Record<string, unknown>;
12
+ readonly details?: JsonObject;
12
13
  constructor(code: ErrorCode, message: string, opts?: CaracalErrorOptions | string);
13
14
  toJSON(): {
14
- details?: Record<string, unknown> | undefined;
15
+ details?: JsonObject | undefined;
15
16
  requestId?: string | undefined;
16
17
  error: ErrorCode;
17
18
  error_description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,iBAAiB,GACjB,kCAAkC,GAClC,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,yBAAyB,GACzB,qBAAqB,GACrB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,CAAC;AAIrB,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAmB,GAAG,MAAW;IASrF,MAAM;;;;;;CAQP"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,iBAAiB,GACjB,kCAAkC,GAClC,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,yBAAyB,GACzB,qBAAqB,GACrB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,CAAC;AAIrB,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;gBAElB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAmB,GAAG,MAAW;IASrF,MAAM;;;;;;CAQP"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,wDAAwD;AAgCxD,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAY;IAChB,SAAS,CAAU;IACnB,OAAO,CAA2B;IAE3C,YAAY,IAAe,EAAE,OAAe,EAAE,OAAqC,EAAE;QACnF,MAAM,OAAO,GAAwB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC1D,IAAI,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACtD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,iBAAiB,EAAE,IAAI,CAAC,OAAO;YAC/B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,wDAAwD;AAkCxD,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAY;IAChB,SAAS,CAAU;IACnB,OAAO,CAAc;IAE9B,YAAY,IAAe,EAAE,OAAe,EAAE,OAAqC,EAAE;QACnF,MAAM,OAAO,GAAwB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC1D,IAAI,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACtD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,iBAAiB,EAAE,IAAI,CAAC,OAAO;YAC/B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,15 @@
1
+ export * from './async.js';
1
2
  export * from './config.js';
2
3
  export * from './crypto.js';
3
4
  export * from './env.js';
4
5
  export * from './envfile.js';
5
6
  export * from './errors.js';
7
+ export * from './json.js';
8
+ export * from './lifecycle.js';
6
9
  export * from './logging.js';
10
+ export * from './audit.js';
11
+ export * from './metrics.js';
12
+ export * from './telemetry.js';
7
13
  export * from './scope.js';
8
14
  export * from './url.js';
9
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,13 +1,19 @@
1
1
  // Copyright (C) 2026 Garudex Labs. All Rights Reserved.
2
2
  // Caracal, a product of Garudex Labs
3
3
  //
4
- // @caracalai/core configuration, errors, and logging for TypeScript services.
4
+ // @caracalai/core: configuration, errors, and logging for TypeScript services.
5
+ export * from './async.js';
5
6
  export * from './config.js';
6
7
  export * from './crypto.js';
7
8
  export * from './env.js';
8
9
  export * from './envfile.js';
9
10
  export * from './errors.js';
11
+ export * from './json.js';
12
+ export * from './lifecycle.js';
10
13
  export * from './logging.js';
14
+ export * from './audit.js';
15
+ export * from './metrics.js';
16
+ export * from './telemetry.js';
11
17
  export * from './scope.js';
12
18
  export * from './url.js';
13
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAEhF,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,+EAA+E;AAE/E,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
package/dist/json.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type JsonPrimitive = string | number | boolean | null;
2
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
3
+ export type JsonObject = {
4
+ [key: string]: JsonValue;
5
+ };
6
+ export type JsonArray = JsonValue[];
7
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC"}
package/dist/json.js ADDED
@@ -0,0 +1,6 @@
1
+ // Copyright (C) 2026 Garudex Labs. All Rights Reserved.
2
+ // Caracal, a product of Garudex Labs
3
+ //
4
+ // JSON value types shared by TypeScript packages.
5
+ export {};
6
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,kDAAkD"}
@@ -0,0 +1,17 @@
1
+ export type ShutdownFn = () => Promise<void> | void;
2
+ export declare class ShutdownRegistry {
3
+ private readonly opts;
4
+ private entries;
5
+ private installed;
6
+ private firing;
7
+ constructor(opts: {
8
+ timeoutMs: number;
9
+ log: (level: 'info' | 'warn' | 'error', msg: string, meta?: Record<string, unknown>) => void;
10
+ exit?: (code: number) => void;
11
+ });
12
+ register(name: string, fn: ShutdownFn): void;
13
+ get draining(): boolean;
14
+ install(signals?: NodeJS.Signals[]): void;
15
+ fire(reason: string, code?: number): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAOpD,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAGJ,IAAI,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC7F,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B;IAGH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI;IAI5C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,CAAC,OAAO,GAAE,MAAM,CAAC,OAAO,EAA0B,GAAG,IAAI;IAU1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAuCpD"}
@@ -0,0 +1,66 @@
1
+ // Copyright (C) 2026 Garudex Labs. All Rights Reserved.
2
+ // Caracal, a product of Garudex Labs
3
+ //
4
+ // Shared graceful shutdown registry for TypeScript services.
5
+ import { withTimeout } from './async.js';
6
+ export class ShutdownRegistry {
7
+ opts;
8
+ entries = [];
9
+ installed = false;
10
+ firing = false;
11
+ constructor(opts) {
12
+ this.opts = opts;
13
+ }
14
+ register(name, fn) {
15
+ this.entries.push({ name, fn });
16
+ }
17
+ get draining() {
18
+ return this.firing;
19
+ }
20
+ install(signals = ['SIGTERM', 'SIGINT']) {
21
+ if (this.installed)
22
+ return;
23
+ this.installed = true;
24
+ for (const sig of signals) {
25
+ process.once(sig, () => {
26
+ void this.fire(sig, 0);
27
+ });
28
+ }
29
+ }
30
+ async fire(reason, code = 0) {
31
+ if (this.firing)
32
+ return;
33
+ this.firing = true;
34
+ this.opts.log('info', 'shutdown initiated', { reason, entries: this.entries.length });
35
+ const exit = this.opts.exit ?? ((exitCode) => process.exit(exitCode));
36
+ const deadline = Date.now() + this.opts.timeoutMs;
37
+ const timeout = setTimeout(() => {
38
+ this.opts.log('error', 'shutdown timed out; forcing exit', { timeoutMs: this.opts.timeoutMs });
39
+ exit(1);
40
+ }, this.opts.timeoutMs);
41
+ timeout.unref();
42
+ let exitCode = code;
43
+ for (const entry of [...this.entries].reverse()) {
44
+ const remaining = deadline - Date.now();
45
+ if (remaining <= 0) {
46
+ this.opts.log('error', 'shutdown deadline exceeded; skipping remaining', { skipped: entry.name });
47
+ exitCode = 1;
48
+ break;
49
+ }
50
+ try {
51
+ await withTimeout(Promise.resolve(entry.fn()), remaining, `shutdown step ${entry.name} did not complete within ${remaining}ms`);
52
+ this.opts.log('info', 'shutdown step completed', { entry: entry.name });
53
+ }
54
+ catch (err) {
55
+ this.opts.log('error', 'shutdown step failed', {
56
+ entry: entry.name,
57
+ err: err.message,
58
+ });
59
+ exitCode = 1;
60
+ }
61
+ }
62
+ clearTimeout(timeout);
63
+ exit(exitCode);
64
+ }
65
+ }
66
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
package/dist/logging.d.ts CHANGED
@@ -1,10 +1,65 @@
1
- type Level = 'debug' | 'info' | 'warn' | 'error';
2
- export type Logger = ReturnType<typeof createLogger>;
3
- export declare function createLogger(service: string, level?: Level): {
1
+ import type { Writable } from 'node:stream';
2
+ type Level = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
3
+ /**
4
+ * Field names whose values must never appear in dev logs. Mirror this list in
5
+ * packages/core/go/logging/redact.go and packages/core/python/caracalai_core/logging.py.
6
+ */
7
+ export declare const SECRET_KEYS: readonly string[];
8
+ export declare const REDACT_VALUE = "***";
9
+ export declare const MAX_FIELD_BYTES: number;
10
+ export declare function isSecretKey(name: string): boolean;
11
+ export declare function buildPinoRedactPaths(): string[];
12
+ /**
13
+ * Scrub Bearer tokens, JWT-shaped substrings, and common cloud secret patterns
14
+ * (AWS, GCP, GitHub, Slack, PEM keys) from a string. Cheap on the common path.
15
+ */
16
+ export declare function redactString(s: string): string;
17
+ export declare function truncateString(s: string): string;
18
+ /**
19
+ * Returns a deep copy of `value` with any field whose key matches SECRET_KEYS
20
+ * replaced with REDACT_VALUE, string values scrubbed of token-like patterns
21
+ * and truncated to MAX_FIELD_BYTES, and Error instances flattened to plain
22
+ * JSON-friendly objects.
23
+ */
24
+ export declare function redact<T>(value: T): T;
25
+ export type TraceContext = {
26
+ traceId?: string;
27
+ spanId?: string;
28
+ };
29
+ /** Run `fn` with the provided trace context bound to the async chain. */
30
+ export declare function runWithTrace<R>(tc: TraceContext, fn: () => R): R;
31
+ /** Enter a trace context for the remainder of the current async chain. */
32
+ export declare function bindTrace(tc: TraceContext): void;
33
+ /** Returns the trace context bound to the current async chain, or undefined. */
34
+ export declare function getTraceContext(): TraceContext | undefined;
35
+ /** Parse a W3C traceparent header (`version-traceid-spanid-flags`). */
36
+ export declare function parseTraceparent(h: string | undefined): TraceContext;
37
+ /** Returns a pino-compatible mixin function that injects trace fields. */
38
+ export declare function traceMixin(): () => Record<string, unknown>;
39
+ export type Logger = {
40
+ level: Level;
4
41
  debug: (msg: string, fields?: Record<string, unknown>) => void;
5
42
  info: (msg: string, fields?: Record<string, unknown>) => void;
6
43
  warn: (msg: string, fields?: Record<string, unknown>) => void;
7
44
  error: (msg: string, fields?: Record<string, unknown>) => void;
45
+ fatal: (msg: string, fields?: Record<string, unknown>) => void;
46
+ with: (fields: Record<string, unknown>) => Logger;
47
+ metrics: () => DevLogMetrics;
48
+ };
49
+ export type DevLogMetrics = {
50
+ emitted: number;
51
+ dropped: number;
52
+ sampled: number;
8
53
  };
54
+ export declare function devLogMetrics(): DevLogMetrics;
55
+ export interface CreateLoggerOptions {
56
+ level?: Level;
57
+ hostname?: string;
58
+ pid?: number;
59
+ version?: string;
60
+ env?: string;
61
+ stream?: Writable;
62
+ }
63
+ export declare function createLogger(service: string, levelOrOpts?: Level | CreateLoggerOptions): Logger;
9
64
  export {};
10
65
  //# sourceMappingURL=logging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAQjD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,KAAc;iBASlD,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBACzC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBACxC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;iBACvC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAExD"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"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"}