@kadi.build/core 0.0.1-alpha.9 → 0.1.0

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 (126) hide show
  1. package/README.md +362 -1305
  2. package/dist/client.d.ts +573 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +1673 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/errors.d.ts +107 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +147 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/index.d.ts +37 -14
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +40 -23
  13. package/dist/index.js.map +1 -1
  14. package/dist/lockfile.d.ts +190 -0
  15. package/dist/lockfile.d.ts.map +1 -0
  16. package/dist/lockfile.js +373 -0
  17. package/dist/lockfile.js.map +1 -0
  18. package/dist/transports/broker.d.ts +75 -0
  19. package/dist/transports/broker.d.ts.map +1 -0
  20. package/dist/transports/broker.js +383 -0
  21. package/dist/transports/broker.js.map +1 -0
  22. package/dist/transports/native.d.ts +39 -0
  23. package/dist/transports/native.d.ts.map +1 -0
  24. package/dist/transports/native.js +189 -0
  25. package/dist/transports/native.js.map +1 -0
  26. package/dist/transports/stdio.d.ts +46 -0
  27. package/dist/transports/stdio.d.ts.map +1 -0
  28. package/dist/transports/stdio.js +460 -0
  29. package/dist/transports/stdio.js.map +1 -0
  30. package/dist/types.d.ts +664 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +16 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/zod.d.ts +34 -0
  35. package/dist/zod.d.ts.map +1 -0
  36. package/dist/zod.js +60 -0
  37. package/dist/zod.js.map +1 -0
  38. package/package.json +13 -28
  39. package/dist/KadiClient.d.ts +0 -470
  40. package/dist/KadiClient.d.ts.map +0 -1
  41. package/dist/KadiClient.js +0 -1572
  42. package/dist/KadiClient.js.map +0 -1
  43. package/dist/errors/error-codes.d.ts +0 -985
  44. package/dist/errors/error-codes.d.ts.map +0 -1
  45. package/dist/errors/error-codes.js +0 -638
  46. package/dist/errors/error-codes.js.map +0 -1
  47. package/dist/loadAbility.d.ts +0 -105
  48. package/dist/loadAbility.d.ts.map +0 -1
  49. package/dist/loadAbility.js +0 -370
  50. package/dist/loadAbility.js.map +0 -1
  51. package/dist/messages/BrokerMessages.d.ts +0 -84
  52. package/dist/messages/BrokerMessages.d.ts.map +0 -1
  53. package/dist/messages/BrokerMessages.js +0 -125
  54. package/dist/messages/BrokerMessages.js.map +0 -1
  55. package/dist/messages/MessageBuilder.d.ts +0 -83
  56. package/dist/messages/MessageBuilder.d.ts.map +0 -1
  57. package/dist/messages/MessageBuilder.js +0 -144
  58. package/dist/messages/MessageBuilder.js.map +0 -1
  59. package/dist/schemas/events.schemas.d.ts +0 -177
  60. package/dist/schemas/events.schemas.d.ts.map +0 -1
  61. package/dist/schemas/events.schemas.js +0 -265
  62. package/dist/schemas/events.schemas.js.map +0 -1
  63. package/dist/schemas/index.d.ts +0 -3
  64. package/dist/schemas/index.d.ts.map +0 -1
  65. package/dist/schemas/index.js +0 -4
  66. package/dist/schemas/index.js.map +0 -1
  67. package/dist/schemas/kadi.schemas.d.ts +0 -70
  68. package/dist/schemas/kadi.schemas.d.ts.map +0 -1
  69. package/dist/schemas/kadi.schemas.js +0 -120
  70. package/dist/schemas/kadi.schemas.js.map +0 -1
  71. package/dist/transports/BrokerTransport.d.ts +0 -102
  72. package/dist/transports/BrokerTransport.d.ts.map +0 -1
  73. package/dist/transports/BrokerTransport.js +0 -177
  74. package/dist/transports/BrokerTransport.js.map +0 -1
  75. package/dist/transports/NativeTransport.d.ts +0 -82
  76. package/dist/transports/NativeTransport.d.ts.map +0 -1
  77. package/dist/transports/NativeTransport.js +0 -263
  78. package/dist/transports/NativeTransport.js.map +0 -1
  79. package/dist/transports/StdioTransport.d.ts +0 -112
  80. package/dist/transports/StdioTransport.d.ts.map +0 -1
  81. package/dist/transports/StdioTransport.js +0 -450
  82. package/dist/transports/StdioTransport.js.map +0 -1
  83. package/dist/transports/Transport.d.ts +0 -93
  84. package/dist/transports/Transport.d.ts.map +0 -1
  85. package/dist/transports/Transport.js +0 -13
  86. package/dist/transports/Transport.js.map +0 -1
  87. package/dist/types/broker.d.ts +0 -31
  88. package/dist/types/broker.d.ts.map +0 -1
  89. package/dist/types/broker.js +0 -6
  90. package/dist/types/broker.js.map +0 -1
  91. package/dist/types/core.d.ts +0 -139
  92. package/dist/types/core.d.ts.map +0 -1
  93. package/dist/types/core.js +0 -26
  94. package/dist/types/core.js.map +0 -1
  95. package/dist/types/events.d.ts +0 -186
  96. package/dist/types/events.d.ts.map +0 -1
  97. package/dist/types/events.js +0 -16
  98. package/dist/types/events.js.map +0 -1
  99. package/dist/types/index.d.ts +0 -9
  100. package/dist/types/index.d.ts.map +0 -1
  101. package/dist/types/index.js +0 -13
  102. package/dist/types/index.js.map +0 -1
  103. package/dist/types/protocol.d.ts +0 -160
  104. package/dist/types/protocol.d.ts.map +0 -1
  105. package/dist/types/protocol.js +0 -5
  106. package/dist/types/protocol.js.map +0 -1
  107. package/dist/utils/agentUtils.d.ts +0 -187
  108. package/dist/utils/agentUtils.d.ts.map +0 -1
  109. package/dist/utils/agentUtils.js +0 -185
  110. package/dist/utils/agentUtils.js.map +0 -1
  111. package/dist/utils/commandUtils.d.ts +0 -45
  112. package/dist/utils/commandUtils.d.ts.map +0 -1
  113. package/dist/utils/commandUtils.js +0 -145
  114. package/dist/utils/commandUtils.js.map +0 -1
  115. package/dist/utils/configUtils.d.ts +0 -55
  116. package/dist/utils/configUtils.d.ts.map +0 -1
  117. package/dist/utils/configUtils.js +0 -100
  118. package/dist/utils/configUtils.js.map +0 -1
  119. package/dist/utils/logger.d.ts +0 -59
  120. package/dist/utils/logger.d.ts.map +0 -1
  121. package/dist/utils/logger.js +0 -122
  122. package/dist/utils/logger.js.map +0 -1
  123. package/dist/utils/pathUtils.d.ts +0 -48
  124. package/dist/utils/pathUtils.d.ts.map +0 -1
  125. package/dist/utils/pathUtils.js +0 -128
  126. package/dist/utils/pathUtils.js.map +0 -1
@@ -1,100 +0,0 @@
1
- import { getKadiJSON } from './agentUtils.js';
2
- // Initialize brokers configuration
3
- const kadijson = getKadiJSON();
4
- const brokers = {};
5
- // Extract broker URLs from config - handle both object and array formats
6
- const brokersConfig = kadijson?.brokers;
7
- if (brokersConfig) {
8
- if (Array.isArray(brokersConfig)) {
9
- // Handle array format: [{name: 'local', url: 'ws://...'}]
10
- for (const broker of brokersConfig) {
11
- brokers[broker.name] = broker.url;
12
- }
13
- }
14
- else if (typeof brokersConfig === 'object') {
15
- // Handle object format: {local: 'ws://127.0.0.1:8080', remote: 'ws://...'}
16
- Object.assign(brokers, brokersConfig);
17
- }
18
- }
19
- export const KADI_BROKERS = brokers;
20
- // Determine default broker
21
- let defaultBrokerName;
22
- if (kadijson?.brokers) {
23
- if (Array.isArray(kadijson.brokers)) {
24
- // Array format
25
- defaultBrokerName =
26
- kadijson.brokers.find((b) => b.default)?.name ||
27
- kadijson.brokers[0]?.name;
28
- }
29
- else {
30
- // Object format - use first key as default
31
- defaultBrokerName = Object.keys(kadijson.brokers)[0];
32
- }
33
- }
34
- export const KADI_BROKER_URL = defaultBrokerName
35
- ? brokers[defaultBrokerName]
36
- : undefined; // Backward compatibility
37
- // Active broker state
38
- let activeBrokerName = defaultBrokerName;
39
- /**
40
- * Get broker URL by name
41
- */
42
- export function getBrokerUrl(brokerName) {
43
- return brokers[brokerName];
44
- }
45
- /**
46
- * Get all broker names
47
- */
48
- export function getBrokerNames() {
49
- return Object.keys(brokers);
50
- }
51
- /**
52
- * Get the default broker name
53
- */
54
- export function getDefaultBrokerName() {
55
- return defaultBrokerName;
56
- }
57
- /**
58
- * Set the active broker
59
- * @throws {Error} If broker name is not found
60
- */
61
- export function setActiveBroker(brokerName) {
62
- if (!brokers[brokerName]) {
63
- throw new Error(`Broker '${brokerName}' not found in configuration`);
64
- }
65
- activeBrokerName = brokerName;
66
- }
67
- /**
68
- * Get the active broker name
69
- */
70
- export function getActiveBrokerName() {
71
- return activeBrokerName;
72
- }
73
- /**
74
- * Get the active broker URL
75
- */
76
- export function getActiveBrokerUrl() {
77
- return activeBrokerName ? brokers[activeBrokerName] : undefined;
78
- }
79
- /**
80
- * Find ability version by name
81
- * @param abilities - Array of ability configurations
82
- * @param name - Name of the ability to find
83
- * @returns The ability configuration or undefined
84
- */
85
- export function findAbilityVersionByName(abilities, name) {
86
- return abilities.find((ability) => ability.name === name);
87
- }
88
- // Export default for backward compatibility
89
- export default {
90
- KADI_BROKERS,
91
- KADI_BROKER_URL,
92
- getBrokerUrl,
93
- getBrokerNames,
94
- getDefaultBrokerName,
95
- setActiveBroker,
96
- getActiveBrokerName,
97
- getActiveBrokerUrl,
98
- findAbilityVersionByName
99
- };
100
- //# sourceMappingURL=configUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configUtils.js","sourceRoot":"","sources":["../../src/utils/configUtils.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import { Debugger } from 'debug';
2
- export interface KadiLogger extends Debugger {
3
- trace: Debugger;
4
- error: Debugger;
5
- lifecycle: Debugger;
6
- protocol: Debugger;
7
- transport: Debugger;
8
- info: Debugger;
9
- warn: Debugger;
10
- debug: Debugger;
11
- }
12
- export declare const loggers: {
13
- main: KadiLogger | null;
14
- ability: KadiLogger | null;
15
- broker: KadiLogger | null;
16
- ipc: KadiLogger | null;
17
- transport: KadiLogger | null;
18
- rpc: KadiLogger | null;
19
- };
20
- /**
21
- * Creates a namespaced logger with sub-loggers for different concerns
22
- * @param namespace - The logger namespace (e.g., 'ability', 'broker')
23
- * @returns A logger instance with specialized sub-loggers
24
- */
25
- export declare function createLogger(namespace: string): KadiLogger;
26
- /**
27
- * Creates a logger for a specific component within a namespace
28
- */
29
- export declare function createComponentLogger(component: string): KadiLogger;
30
- /**
31
- * Checks if debug is enabled for a namespace
32
- */
33
- export declare function isDebugEnabled(namespace: string): boolean;
34
- /**
35
- * Format an object for logging
36
- */
37
- export declare function formatObject(obj: any, label?: string): string;
38
- /**
39
- * Create a child logger with additional context
40
- */
41
- export declare function createChildLogger(parentLogger: KadiLogger, context: string): KadiLogger;
42
- export declare function isKadiLogger(obj: unknown): obj is KadiLogger;
43
- declare const _default: {
44
- loggers: {
45
- main: KadiLogger | null;
46
- ability: KadiLogger | null;
47
- broker: KadiLogger | null;
48
- ipc: KadiLogger | null;
49
- transport: KadiLogger | null;
50
- rpc: KadiLogger | null;
51
- };
52
- createLogger: typeof createLogger;
53
- createComponentLogger: typeof createComponentLogger;
54
- isDebugEnabled: typeof isDebugEnabled;
55
- formatObject: typeof formatObject;
56
- createChildLogger: typeof createChildLogger;
57
- };
58
- export default _default;
59
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAA0B,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIpD,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACjB;AAMD,eAAO,MAAM,OAAO;UACJ,UAAU,GAAG,IAAI;aACd,UAAU,GAAG,IAAI;YAClB,UAAU,GAAG,IAAI;SACpB,UAAU,GAAG,IAAI;eACX,UAAU,GAAG,IAAI;SACvB,UAAU,GAAG,IAAI;CAC/B,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAwC1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAazD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAKjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,UAAU,EACxB,OAAO,EAAE,MAAM,GACd,UAAU,CAGZ;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAQ5D;;;cAxHe,UAAU,GAAG,IAAI;iBACd,UAAU,GAAG,IAAI;gBAClB,UAAU,GAAG,IAAI;aACpB,UAAU,GAAG,IAAI;mBACX,UAAU,GAAG,IAAI;aACvB,UAAU,GAAG,IAAI;;;;;;;;AAyHhC,wBAOE"}
@@ -1,122 +0,0 @@
1
- import createDebugLogger from 'debug';
2
- import chalk from 'chalk';
3
- // Typed logger storage
4
- const loggerCache = new Map();
5
- // Pre-configured loggers for backward compatibility
6
- export const loggers = {
7
- main: null,
8
- ability: null,
9
- broker: null,
10
- ipc: null,
11
- transport: null,
12
- rpc: null
13
- };
14
- // Initialize default loggers
15
- function initializeDefaultLoggers() {
16
- loggers.main = createLogger('main');
17
- loggers.ability = createLogger('ability');
18
- loggers.broker = createLogger('broker');
19
- loggers.ipc = createLogger('ipc');
20
- loggers.transport = createLogger('transport');
21
- loggers.rpc = createLogger('rpc');
22
- }
23
- /**
24
- * Creates a namespaced logger with sub-loggers for different concerns
25
- * @param namespace - The logger namespace (e.g., 'ability', 'broker')
26
- * @returns A logger instance with specialized sub-loggers
27
- */
28
- export function createLogger(namespace) {
29
- // Check cache first
30
- if (loggerCache.has(namespace)) {
31
- return loggerCache.get(namespace);
32
- }
33
- const baseNamespace = `kadi:${namespace}`;
34
- const logger = createDebugLogger(baseNamespace);
35
- // Create typed sub-loggers
36
- logger.trace = createDebugLogger(`${baseNamespace}:trace`);
37
- logger.error = createDebugLogger(`${baseNamespace}:error`);
38
- logger.lifecycle = createDebugLogger(`${baseNamespace}:lifecycle`);
39
- logger.protocol = createDebugLogger(`${baseNamespace}:protocol`);
40
- logger.transport = createDebugLogger(`${baseNamespace}:transport`);
41
- logger.info = createDebugLogger(`${baseNamespace}:info`);
42
- logger.warn = createDebugLogger(`${baseNamespace}:warn`);
43
- logger.debug = createDebugLogger(`${baseNamespace}:debug`);
44
- // Add colored output for different log levels
45
- const originalError = logger.error;
46
- logger.error = ((message, ...args) => {
47
- if (process.stdout.isTTY) {
48
- originalError(chalk.red(message), ...args);
49
- }
50
- else {
51
- originalError(message, ...args);
52
- }
53
- });
54
- const originalWarn = logger.warn;
55
- logger.warn = ((message, ...args) => {
56
- if (process.stdout.isTTY) {
57
- originalWarn(chalk.yellow(message), ...args);
58
- }
59
- else {
60
- originalWarn(message, ...args);
61
- }
62
- });
63
- loggerCache.set(namespace, logger);
64
- return logger;
65
- }
66
- /**
67
- * Creates a logger for a specific component within a namespace
68
- */
69
- export function createComponentLogger(component) {
70
- return createLogger(component);
71
- }
72
- /**
73
- * Checks if debug is enabled for a namespace
74
- */
75
- export function isDebugEnabled(namespace) {
76
- const debug = process.env.DEBUG || '';
77
- // Handle wildcard patterns
78
- if (debug.includes('*')) {
79
- const patterns = debug.split(',').map((p) => p.trim());
80
- return patterns.some((pattern) => {
81
- const regex = pattern.replace(/\*/g, '.*');
82
- return new RegExp(`^${regex}$`).test(namespace);
83
- });
84
- }
85
- return debug.includes(namespace);
86
- }
87
- /**
88
- * Format an object for logging
89
- */
90
- export function formatObject(obj, label = '') {
91
- if (label) {
92
- return `${label}: ${JSON.stringify(obj, null, 2)}`;
93
- }
94
- return JSON.stringify(obj, null, 2);
95
- }
96
- /**
97
- * Create a child logger with additional context
98
- */
99
- export function createChildLogger(parentLogger, context) {
100
- const namespace = parentLogger.namespace.replace('kadi:', '');
101
- return createLogger(`${namespace}:${context}`);
102
- }
103
- // Type guard for checking if something is a logger
104
- export function isKadiLogger(obj) {
105
- return (obj !== null &&
106
- typeof obj === 'function' &&
107
- 'trace' in obj &&
108
- 'error' in obj &&
109
- 'lifecycle' in obj);
110
- }
111
- // Initialize default loggers on module load
112
- initializeDefaultLoggers();
113
- // Default export for backward compatibility
114
- export default {
115
- loggers,
116
- createLogger,
117
- createComponentLogger,
118
- isDebugEnabled,
119
- formatObject,
120
- createChildLogger
121
- };
122
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- export type ValidatedPath = string & {
2
- __brand: 'ValidatedPath';
3
- };
4
- /**
5
- * Resolves the Kadi executable directory path
6
- * @returns The directory containing the Kadi executable
7
- */
8
- export declare function resolveKadiExecPath(): string;
9
- /**
10
- * Safely resolves Kadi installation path
11
- * @throws {Error} If Kadi installation cannot be found
12
- */
13
- export declare function resolveKadiInstallPath(): string;
14
- export declare const kadiExecDir: string;
15
- export declare const kadiRootDir: string;
16
- export declare const kadiAgentPath: string;
17
- export declare const rootDir: string;
18
- export declare const abilitiesDir: string;
19
- export declare const projectAgentPath: string;
20
- export declare const kadiCoreAgentPath: string;
21
- export declare const pathUtils: {
22
- /**
23
- * Normalizes path for current platform
24
- */
25
- readonly normalize: (inputPath: string) => string;
26
- /**
27
- * Checks if path is absolute
28
- */
29
- readonly isAbsolute: (inputPath: string) => boolean;
30
- /**
31
- * Safely joins paths
32
- */
33
- readonly join: (...paths: string[]) => string;
34
- /**
35
- * Gets directory name from path
36
- */
37
- readonly dirname: (inputPath: string) => string;
38
- /**
39
- * Gets base name from path
40
- */
41
- readonly basename: (inputPath: string, ext?: string) => string;
42
- /**
43
- * Resolve a path relative to the project root
44
- */
45
- readonly resolveFromRoot: (...segments: string[]) => string;
46
- };
47
- export default pathUtils;
48
- //# sourceMappingURL=pathUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathUtils.d.ts","sourceRoot":"","sources":["../../src/utils/pathUtils.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAElE;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAa5C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA4C/C;AAaD,eAAO,MAAM,WAAW,QAAwB,CAAC;AACjD,eAAO,MAAM,WAAW,QAA2B,CAAC;AACpD,eAAO,MAAM,aAAa,QAAuC,CAAC;AAElE,eAAO,MAAM,OAAO,QAAgB,CAAC;AACrC,eAAO,MAAM,YAAY,QAAkC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AACjE,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAG1E,eAAO,MAAM,SAAS;IACpB;;OAEG;oCACkB,MAAM,KAAG,MAAM;IAIpC;;OAEG;qCACmB,MAAM,KAAG,OAAO;IAItC;;OAEG;8BACY,MAAM,EAAE,KAAG,MAAM;IAIhC;;OAEG;kCACgB,MAAM,KAAG,MAAM;IAIlC;;OAEG;mCACiB,MAAM,QAAQ,MAAM,KAAG,MAAM;IAIjD;;OAEG;4CAC0B,MAAM,EAAE,KAAG,MAAM;CAGtC,CAAC;AAEX,eAAe,SAAS,CAAC"}
@@ -1,128 +0,0 @@
1
- import path from 'node:path';
2
- import fs from 'node:fs';
3
- import { execSync } from 'node:child_process';
4
- import { fileURLToPath } from 'node:url';
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
- /**
8
- * Resolves the Kadi executable directory path
9
- * @returns The directory containing the Kadi executable
10
- */
11
- export function resolveKadiExecPath() {
12
- // Try to find kadi using which command
13
- try {
14
- const kadiPath = execSync('which kadi', { encoding: 'utf8' }).trim();
15
- if (kadiPath) {
16
- return path.dirname(kadiPath);
17
- }
18
- }
19
- catch {
20
- // which command failed, continue with other methods
21
- }
22
- // Fallback to process.execPath
23
- return path.dirname(process.execPath);
24
- }
25
- /**
26
- * Safely resolves Kadi installation path
27
- * @throws {Error} If Kadi installation cannot be found
28
- */
29
- export function resolveKadiInstallPath() {
30
- // Try using npm to find the global kadi installation
31
- try {
32
- const npmGlobalPath = execSync('npm root -g', { encoding: 'utf8' }).trim();
33
- const kadiPath = path.join(npmGlobalPath, 'kadi');
34
- if (fs.existsSync(kadiPath)) {
35
- return kadiPath;
36
- }
37
- }
38
- catch {
39
- // npm command failed, continue with other methods
40
- }
41
- // Try to find kadi in the path
42
- try {
43
- const kadiExecutable = execSync('which kadi', { encoding: 'utf8' }).trim();
44
- if (kadiExecutable) {
45
- // Follow symlinks to get real path
46
- const realPath = fs.realpathSync(kadiExecutable);
47
- // Go up from bin to find the kadi root
48
- let currentPath = path.dirname(realPath);
49
- while (currentPath !== path.dirname(currentPath)) {
50
- if (fs.existsSync(path.join(currentPath, 'package.json'))) {
51
- try {
52
- const pkg = JSON.parse(fs.readFileSync(path.join(currentPath, 'package.json'), 'utf8'));
53
- if (pkg.name === 'kadi' || pkg.name === '@kadi.build/core') {
54
- return currentPath;
55
- }
56
- }
57
- catch {
58
- // Not a valid package.json, continue searching
59
- }
60
- }
61
- currentPath = path.dirname(currentPath);
62
- }
63
- }
64
- }
65
- catch {
66
- // which command failed
67
- }
68
- // Fallback to current working directory
69
- return process.cwd();
70
- }
71
- /**
72
- * Type guard to validate a path exists
73
- */
74
- function validatePath(pathStr) {
75
- if (!fs.existsSync(pathStr)) {
76
- throw new Error(`Path does not exist: ${pathStr}`);
77
- }
78
- return pathStr;
79
- }
80
- // Export path constants
81
- export const kadiExecDir = resolveKadiExecPath();
82
- export const kadiRootDir = resolveKadiInstallPath();
83
- export const kadiAgentPath = path.join(kadiRootDir, 'agent.json');
84
- export const rootDir = process.cwd();
85
- export const abilitiesDir = path.join(rootDir, 'abilities');
86
- export const projectAgentPath = path.join(rootDir, 'agent.json');
87
- export const kadiCoreAgentPath = path.join(__dirname, '..', 'agent.json');
88
- // Platform-specific path utilities
89
- export const pathUtils = {
90
- /**
91
- * Normalizes path for current platform
92
- */
93
- normalize(inputPath) {
94
- return path.normalize(inputPath);
95
- },
96
- /**
97
- * Checks if path is absolute
98
- */
99
- isAbsolute(inputPath) {
100
- return path.isAbsolute(inputPath);
101
- },
102
- /**
103
- * Safely joins paths
104
- */
105
- join(...paths) {
106
- return path.join(...paths);
107
- },
108
- /**
109
- * Gets directory name from path
110
- */
111
- dirname(inputPath) {
112
- return path.dirname(inputPath);
113
- },
114
- /**
115
- * Gets base name from path
116
- */
117
- basename(inputPath, ext) {
118
- return path.basename(inputPath, ext);
119
- },
120
- /**
121
- * Resolve a path relative to the project root
122
- */
123
- resolveFromRoot(...segments) {
124
- return path.resolve(rootDir, ...segments);
125
- }
126
- };
127
- export default pathUtils;
128
- //# sourceMappingURL=pathUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathUtils.js","sourceRoot":"","sources":["../../src/utils/pathUtils.ts"],"names":[],"mappings":"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"}