@copado/agentia-cli 0.69.0-alpha.0 → 0.70.0-alpha.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.
@@ -0,0 +1,3 @@
1
+ import { type Hook } from '@oclif/core';
2
+ declare const hook: Hook<'finally'>;
3
+ export default hook;
@@ -0,0 +1,19 @@
1
+ import { consumeIdeCommandError, publishIdeCommandCompleted } from '../../lib/ide-command-events.js';
2
+ const hook = async function ({ config, error, id }) {
3
+ try {
4
+ const rememberedError = consumeIdeCommandError();
5
+ if (id.trim().length === 0) {
6
+ return;
7
+ }
8
+ await publishIdeCommandCompleted({
9
+ cliVersion: config.version,
10
+ commandId: id,
11
+ error: error ?? rememberedError,
12
+ });
13
+ }
14
+ catch {
15
+ // IDE notifications are best-effort and must never change CLI output or exit status.
16
+ }
17
+ };
18
+ export default hook;
19
+ //# sourceMappingURL=ide-command-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-command-event.js","sourceRoot":"","sources":["../../../src/hooks/finally/ide-command-event.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAE,0BAA0B,EAAC,MAAM,iCAAiC,CAAA;AAElG,MAAM,IAAI,GAAoB,KAAK,WAAW,EAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;IAC/D,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAA;QAChD,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAM;QACR,CAAC;QAED,MAAM,0BAA0B,CAAC;YAC/B,UAAU,EAAE,MAAM,CAAC,OAAO;YAC1B,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,KAAK,IAAI,eAAe;SAChC,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;IACvF,CAAC;AACH,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -4,6 +4,7 @@ export declare abstract class AgentiaCommand extends Command {
4
4
  private commandTransactionId;
5
5
  protected _run<T>(): Promise<T>;
6
6
  protected display(render: () => void): void;
7
+ protected finally(error: Error | undefined): Promise<unknown>;
7
8
  protected toErrorJson(err: unknown): unknown;
8
9
  protected toSuccessJson(result: unknown): unknown;
9
10
  protected withSpinner<T>(message: string, action: () => Promise<T>): Promise<T>;
@@ -1,5 +1,6 @@
1
1
  import { Command, ux } from '@oclif/core';
2
2
  import { createTransactionId, runWithGatewayTransactionContext } from './cicd-gateway.js';
3
+ import { rememberIdeCommandError } from './ide-command-events.js';
3
4
  export class AgentiaCommand extends Command {
4
5
  static enableJsonFlag = true;
5
6
  commandTransactionId;
@@ -13,6 +14,10 @@ export class AgentiaCommand extends Command {
13
14
  render();
14
15
  }
15
16
  }
17
+ async finally(error) {
18
+ rememberIdeCommandError(error);
19
+ return super.finally(error);
20
+ }
16
21
  toErrorJson(err) {
17
22
  const base = super.toErrorJson(err);
18
23
  return { ...base, transactionId: this.commandTransactionId };
@@ -1 +1 @@
1
- {"version":3,"file":"agentia-command.js","sourceRoot":"","sources":["../../src/lib/agentia-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,mBAAmB,CAAA;AAEvF,MAAM,OAAgB,cAAe,SAAQ,OAAO;IAClD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAS;IAElB,KAAK,CAAC,IAAI;QAC3B,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAA;QAC3C,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAA;QACzC,OAAO,gCAAgC,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAK,CAAC,CAAA;IACnG,CAAC;IAES,OAAO,CAAC,MAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAEkB,WAAW,CAAC,GAAY;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAA4B,CAAA;QAC9D,OAAO,EAAC,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IAC5D,CAAC;IAEkB,aAAa,CAAC,MAAe;QAC9C,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,OAAe,EAAE,MAAwB;QACtE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,EAAE,CAAA;QACjB,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"agentia-command.js","sourceRoot":"","sources":["../../src/lib/agentia-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAA;AAE/D,MAAM,OAAgB,cAAe,SAAQ,OAAO;IAClD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAS;IAElB,KAAK,CAAC,IAAI;QAC3B,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAA;QAC3C,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAA;QACzC,OAAO,gCAAgC,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAK,CAAC,CAAA;IACnG,CAAC;IAES,OAAO,CAAC,MAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,OAAO,CAAC,KAAwB;QACvD,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAEkB,WAAW,CAAC,GAAY;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAA4B,CAAA;QAC9D,OAAO,EAAC,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IAC5D,CAAC;IAEkB,aAAa,CAAC,MAAe;QAC9C,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,OAAe,EAAE,MAAwB;QACtE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,EAAE,CAAA;QACjB,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC"}
@@ -0,0 +1,72 @@
1
+ import path from 'node:path';
2
+ export declare const IDE_COMMAND_EVENTS_PROTOCOL_VERSION = 1;
3
+ export declare const IDE_COMMAND_COMPLETED_TYPE = "command.completed";
4
+ export declare const IDE_COMMAND_EVENT_TIMEOUT_MS = 150;
5
+ export declare const IDE_LISTENER_DESCRIPTOR_EXTENSION = ".json";
6
+ export declare const IDE_POSIX_SOCKET_EXTENSION = ".sock";
7
+ export declare const IDE_WINDOWS_PIPE_PREFIX: string;
8
+ export declare const IDE_LISTENERS_DIRNAME = "ide-listeners";
9
+ export declare const IDE_RUNTIME_DIRNAME = "agentia-cli";
10
+ export type IdeCommandStatus = 'failure' | 'success';
11
+ export type IdeCommandCompletedEvent = {
12
+ cliVersion: string;
13
+ commandId: string;
14
+ cwd: string;
15
+ eventId: string;
16
+ exitCode: number;
17
+ protocolVersion: typeof IDE_COMMAND_EVENTS_PROTOCOL_VERSION;
18
+ status: IdeCommandStatus;
19
+ timestamp: string;
20
+ type: typeof IDE_COMMAND_COMPLETED_TYPE;
21
+ };
22
+ export type IdeListenerDescriptor = {
23
+ endpoint: string;
24
+ protocolVersion: number;
25
+ workspaceRoots: string[];
26
+ };
27
+ export type IdePathApi = Pick<typeof path, 'isAbsolute' | 'normalize' | 'relative' | 'resolve' | 'sep'>;
28
+ export type IdeCommandEventSender = (endpoint: string, framedPayload: string, timeoutMs: number) => Promise<void>;
29
+ export type PublishIdeCommandCompletedInput = {
30
+ cliVersion: string;
31
+ commandId: string;
32
+ cwd?: string;
33
+ error?: unknown;
34
+ now?: Date;
35
+ };
36
+ export type IdeCommandEventDeps = {
37
+ listenersDir?: string;
38
+ now?: () => Date;
39
+ platform?: NodeJS.Platform;
40
+ sender?: IdeCommandEventSender;
41
+ timeoutMs?: number;
42
+ };
43
+ export declare function setIdeCommandEventDepsForTests(deps: IdeCommandEventDeps | undefined): void;
44
+ export declare function resetIdeCommandEventDepsForTests(): void;
45
+ export declare function rememberIdeCommandError(error: unknown): void;
46
+ export declare function consumeIdeCommandError(): unknown;
47
+ export declare function defaultIdeListenersDir(tmp?: string): string;
48
+ export declare function ideListenersDir(): string;
49
+ export declare function canonicalizePath(value: string, pathApi?: IdePathApi): string;
50
+ export declare function workspaceContainsCwd(workspaceRoot: string, cwd: string, options?: {
51
+ caseSensitive?: boolean;
52
+ pathApi?: IdePathApi;
53
+ }): boolean;
54
+ export declare function isValidIdeIpcEndpoint(endpoint: string, options: {
55
+ listenersDir: string;
56
+ pathApi?: IdePathApi;
57
+ platform?: NodeJS.Platform;
58
+ }): boolean;
59
+ export declare function parseIdeListenerDescriptor(value: unknown): IdeListenerDescriptor | undefined;
60
+ export declare function exitCodeFromError(error?: unknown): number;
61
+ export declare function buildIdeCommandCompletedEvent(input: PublishIdeCommandCompletedInput & {
62
+ cwd: string;
63
+ eventId?: string;
64
+ now?: Date;
65
+ }): IdeCommandCompletedEvent;
66
+ export declare function frameIdeCommandEvent(event: IdeCommandCompletedEvent): string;
67
+ export declare function publishIdeCommandCompleted(input: PublishIdeCommandCompletedInput): Promise<void>;
68
+ export declare function matchingEndpoints(descriptors: IdeListenerDescriptor[], cwd: string, options: {
69
+ listenersDir: string;
70
+ pathApi?: IdePathApi;
71
+ platform?: NodeJS.Platform;
72
+ }): string[];
@@ -0,0 +1,248 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { readdir, readFile } from 'node:fs/promises';
3
+ import net from 'node:net';
4
+ import { tmpdir } from 'node:os';
5
+ import path from 'node:path';
6
+ import { v7 as uuidv7 } from 'uuid';
7
+ export const IDE_COMMAND_EVENTS_PROTOCOL_VERSION = 1;
8
+ export const IDE_COMMAND_COMPLETED_TYPE = 'command.completed';
9
+ export const IDE_COMMAND_EVENT_TIMEOUT_MS = 150;
10
+ export const IDE_LISTENER_DESCRIPTOR_EXTENSION = '.json';
11
+ export const IDE_POSIX_SOCKET_EXTENSION = '.sock';
12
+ export const IDE_WINDOWS_PIPE_PREFIX = String.raw `\\.\pipe\agentia-cli-ide-`;
13
+ export const IDE_LISTENERS_DIRNAME = 'ide-listeners';
14
+ export const IDE_RUNTIME_DIRNAME = 'agentia-cli';
15
+ const ENV_LISTENERS_DIR = 'AGENTIA_TEST_IDE_LISTENERS_DIR';
16
+ const WINDOWS_PIPE_NAME_PATTERN = /^[\w.-]+$/;
17
+ let testDeps;
18
+ let commandError;
19
+ export function setIdeCommandEventDepsForTests(deps) {
20
+ testDeps = deps;
21
+ }
22
+ export function resetIdeCommandEventDepsForTests() {
23
+ testDeps = undefined;
24
+ commandError = undefined;
25
+ }
26
+ export function rememberIdeCommandError(error) {
27
+ commandError = error;
28
+ }
29
+ export function consumeIdeCommandError() {
30
+ const error = commandError;
31
+ commandError = undefined;
32
+ return error;
33
+ }
34
+ export function defaultIdeListenersDir(tmp = tmpdir()) {
35
+ return path.join(tmp, IDE_RUNTIME_DIRNAME, IDE_LISTENERS_DIRNAME);
36
+ }
37
+ export function ideListenersDir() {
38
+ return process.env[ENV_LISTENERS_DIR] ?? testDeps?.listenersDir ?? defaultIdeListenersDir();
39
+ }
40
+ export function canonicalizePath(value, pathApi = path) {
41
+ const resolved = pathApi.resolve(value);
42
+ try {
43
+ return realpathSync(resolved);
44
+ }
45
+ catch {
46
+ return resolved;
47
+ }
48
+ }
49
+ export function workspaceContainsCwd(workspaceRoot, cwd, options = {}) {
50
+ const pathApi = options.pathApi ?? path;
51
+ const caseSensitive = options.caseSensitive ?? process.platform !== 'win32';
52
+ const root = normalizeForCompare(workspaceRoot, pathApi, caseSensitive);
53
+ const current = normalizeForCompare(cwd, pathApi, caseSensitive);
54
+ if (current === root) {
55
+ return true;
56
+ }
57
+ const prefix = root.endsWith(pathApi.sep) ? root : `${root}${pathApi.sep}`;
58
+ return current.startsWith(prefix);
59
+ }
60
+ export function isValidIdeIpcEndpoint(endpoint, options) {
61
+ const platform = options.platform ?? process.platform;
62
+ if (platform === 'win32') {
63
+ if (!endpoint.startsWith(IDE_WINDOWS_PIPE_PREFIX)) {
64
+ return false;
65
+ }
66
+ return WINDOWS_PIPE_NAME_PATTERN.test(endpoint.slice(IDE_WINDOWS_PIPE_PREFIX.length));
67
+ }
68
+ const pathApi = options.pathApi ?? path;
69
+ if (!pathApi.isAbsolute(endpoint)) {
70
+ return false;
71
+ }
72
+ const resolvedEndpoint = pathApi.resolve(endpoint);
73
+ if (!resolvedEndpoint.endsWith(IDE_POSIX_SOCKET_EXTENSION)) {
74
+ return false;
75
+ }
76
+ return isPathInside(options.listenersDir, resolvedEndpoint, pathApi);
77
+ }
78
+ export function parseIdeListenerDescriptor(value) {
79
+ if (!isRecord(value)) {
80
+ return undefined;
81
+ }
82
+ if (value.protocolVersion !== IDE_COMMAND_EVENTS_PROTOCOL_VERSION) {
83
+ return undefined;
84
+ }
85
+ if (typeof value.endpoint !== 'string' || value.endpoint.trim().length === 0) {
86
+ return undefined;
87
+ }
88
+ if (!Array.isArray(value.workspaceRoots) || value.workspaceRoots.length === 0) {
89
+ return undefined;
90
+ }
91
+ const workspaceRoots = value.workspaceRoots.filter((root) => typeof root === 'string' && root.trim().length > 0);
92
+ if (workspaceRoots.length === 0) {
93
+ return undefined;
94
+ }
95
+ return {
96
+ endpoint: value.endpoint,
97
+ protocolVersion: value.protocolVersion,
98
+ workspaceRoots,
99
+ };
100
+ }
101
+ export function exitCodeFromError(error) {
102
+ if (error === undefined || error === null) {
103
+ return 0;
104
+ }
105
+ if (isRecord(error) && isRecord(error.oclif) && typeof error.oclif.exit === 'number') {
106
+ return error.oclif.exit;
107
+ }
108
+ return 1;
109
+ }
110
+ export function buildIdeCommandCompletedEvent(input) {
111
+ const exitCode = exitCodeFromError(input.error);
112
+ return {
113
+ cliVersion: input.cliVersion,
114
+ commandId: input.commandId,
115
+ cwd: input.cwd,
116
+ eventId: input.eventId ?? uuidv7(),
117
+ exitCode,
118
+ protocolVersion: IDE_COMMAND_EVENTS_PROTOCOL_VERSION,
119
+ status: exitCode === 0 ? 'success' : 'failure',
120
+ timestamp: (input.now ?? new Date()).toISOString(),
121
+ type: IDE_COMMAND_COMPLETED_TYPE,
122
+ };
123
+ }
124
+ export function frameIdeCommandEvent(event) {
125
+ return `${JSON.stringify(event)}\n`;
126
+ }
127
+ export async function publishIdeCommandCompleted(input) {
128
+ try {
129
+ const commandId = input.commandId.trim();
130
+ if (commandId.length === 0) {
131
+ return;
132
+ }
133
+ const platform = testDeps?.platform ?? process.platform;
134
+ const listenersDir = ideListenersDir();
135
+ const cwd = canonicalizePath(input.cwd ?? process.cwd());
136
+ const descriptors = await readListenerDescriptors(listenersDir);
137
+ const endpoints = matchingEndpoints(descriptors, cwd, { listenersDir, platform });
138
+ if (endpoints.length === 0) {
139
+ return;
140
+ }
141
+ const event = buildIdeCommandCompletedEvent({
142
+ ...input,
143
+ commandId,
144
+ cwd,
145
+ now: input.now ?? testDeps?.now?.(),
146
+ });
147
+ const framed = frameIdeCommandEvent(event);
148
+ const timeoutMs = testDeps?.timeoutMs ?? IDE_COMMAND_EVENT_TIMEOUT_MS;
149
+ const sender = testDeps?.sender ?? sendOverIpc;
150
+ await Promise.race([
151
+ Promise.allSettled(endpoints.map(async (endpoint) => sender(endpoint, framed, timeoutMs))),
152
+ delay(timeoutMs),
153
+ ]);
154
+ }
155
+ catch {
156
+ // IDE notifications are best-effort and must never change CLI output or exit status.
157
+ }
158
+ }
159
+ export function matchingEndpoints(descriptors, cwd, options) {
160
+ const endpoints = new Set();
161
+ const pathApi = options.pathApi ?? path;
162
+ const platform = options.platform ?? process.platform;
163
+ const caseSensitive = platform !== 'win32';
164
+ for (const descriptor of descriptors) {
165
+ if (!isValidIdeIpcEndpoint(descriptor.endpoint, { listenersDir: options.listenersDir, pathApi, platform })) {
166
+ continue;
167
+ }
168
+ const matches = descriptor.workspaceRoots.some((root) => workspaceContainsCwd(canonicalizePath(root, pathApi), cwd, { caseSensitive, pathApi }));
169
+ if (matches) {
170
+ endpoints.add(descriptor.endpoint);
171
+ }
172
+ }
173
+ return [...endpoints];
174
+ }
175
+ async function readListenerDescriptors(listenersDir) {
176
+ let entries;
177
+ try {
178
+ entries = await readdir(listenersDir);
179
+ }
180
+ catch {
181
+ return [];
182
+ }
183
+ const descriptors = [];
184
+ await Promise.all(entries.map(async (entry) => {
185
+ if (!entry.endsWith(IDE_LISTENER_DESCRIPTOR_EXTENSION)) {
186
+ return;
187
+ }
188
+ try {
189
+ const contents = await readFile(path.join(listenersDir, entry), 'utf8');
190
+ const descriptor = parseIdeListenerDescriptor(JSON.parse(contents));
191
+ if (descriptor !== undefined) {
192
+ descriptors.push(descriptor);
193
+ }
194
+ }
195
+ catch {
196
+ // Malformed or unreadable descriptors are ignored.
197
+ }
198
+ }));
199
+ return descriptors;
200
+ }
201
+ function sendOverIpc(endpoint, framedPayload, timeoutMs) {
202
+ return new Promise((resolve) => {
203
+ let settled = false;
204
+ const finish = () => {
205
+ if (settled) {
206
+ return;
207
+ }
208
+ settled = true;
209
+ resolve();
210
+ };
211
+ const socket = net.createConnection(endpoint);
212
+ const timer = setTimeout(() => {
213
+ socket.destroy();
214
+ finish();
215
+ }, timeoutMs);
216
+ socket.on('connect', () => {
217
+ socket.write(framedPayload, () => {
218
+ socket.end();
219
+ });
220
+ });
221
+ socket.on('close', () => {
222
+ clearTimeout(timer);
223
+ finish();
224
+ });
225
+ socket.on('error', () => {
226
+ clearTimeout(timer);
227
+ socket.destroy();
228
+ finish();
229
+ });
230
+ });
231
+ }
232
+ function delay(timeoutMs) {
233
+ return new Promise((resolve) => {
234
+ setTimeout(resolve, timeoutMs);
235
+ });
236
+ }
237
+ function normalizeForCompare(value, pathApi, caseSensitive) {
238
+ const normalized = pathApi.normalize(pathApi.resolve(value));
239
+ return caseSensitive ? normalized : normalized.toLowerCase();
240
+ }
241
+ function isPathInside(parent, child, pathApi) {
242
+ const relative = pathApi.relative(pathApi.resolve(parent), pathApi.resolve(child));
243
+ return relative !== '' && !relative.startsWith('..') && !pathApi.isAbsolute(relative);
244
+ }
245
+ function isRecord(value) {
246
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
247
+ }
248
+ //# sourceMappingURL=ide-command-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-command-events.js","sourceRoot":"","sources":["../../src/lib/ide-command-events.ts"],"names":[],"mappings":"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"}
@@ -12098,5 +12098,5 @@
12098
12098
  ]
12099
12099
  }
12100
12100
  },
12101
- "version": "0.69.0-alpha.0"
12101
+ "version": "0.70.0-alpha.0"
12102
12102
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@copado/agentia-cli",
3
3
  "description": "Command-line interface for Agentia",
4
- "version": "0.69.0-alpha.0",
4
+ "version": "0.70.0-alpha.0",
5
5
  "author": "Copado Solutions",
6
6
  "bin": {
7
7
  "agentia": "./bin/run.js"
@@ -57,6 +57,9 @@
57
57
  "dirname": "agentia-cli",
58
58
  "commands": "./dist/commands",
59
59
  "hooks": {
60
+ "finally": [
61
+ "./dist/hooks/finally/ide-command-event"
62
+ ],
60
63
  "init": [
61
64
  "./dist/hooks/init/version-warning"
62
65
  ]