@phnx-labs/agents-cli 0.1.0 → 1.12.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.
- package/README.md +14 -96
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +17 -135
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +3 -30
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +3 -37
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/sessions.d.ts.map +1 -1
- package/dist/commands/sessions.js +0 -100
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +2 -42
- package/dist/commands/view.js.map +1 -1
- package/dist/index.js +8 -37
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/hooks.test.js +2 -2
- package/dist/lib/__tests__/hooks.test.js.map +1 -1
- package/dist/lib/__tests__/models.test.js +1 -56
- package/dist/lib/__tests__/models.test.js.map +1 -1
- package/dist/lib/__tests__/usage.test.js +2 -4
- package/dist/lib/__tests__/usage.test.js.map +1 -1
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +2 -10
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/exec.d.ts +1 -4
- package/dist/lib/exec.d.ts.map +1 -1
- package/dist/lib/exec.js +15 -24
- package/dist/lib/exec.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +1 -153
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/models.d.ts +10 -18
- package/dist/lib/models.d.ts.map +1 -1
- package/dist/lib/models.js +12 -380
- package/dist/lib/models.js.map +1 -1
- package/dist/lib/session/types.d.ts +0 -8
- package/dist/lib/session/types.d.ts.map +1 -1
- package/dist/lib/shims.d.ts +2 -31
- package/dist/lib/shims.d.ts.map +1 -1
- package/dist/lib/shims.js +24 -75
- package/dist/lib/shims.js.map +1 -1
- package/dist/lib/state.d.ts +0 -7
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +1 -14
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/usage.d.ts +0 -16
- package/dist/lib/usage.d.ts.map +1 -1
- package/dist/lib/usage.js +10 -27
- package/dist/lib/usage.js.map +1 -1
- package/dist/lib/versions.d.ts +1 -7
- package/dist/lib/versions.d.ts.map +1 -1
- package/dist/lib/versions.js +8 -30
- package/dist/lib/versions.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/cloud.d.ts +0 -3
- package/dist/commands/cloud.d.ts.map +0 -1
- package/dist/commands/cloud.js +0 -322
- package/dist/commands/cloud.js.map +0 -1
- package/dist/commands/profiles.d.ts +0 -3
- package/dist/commands/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.js +0 -242
- package/dist/commands/profiles.js.map +0 -1
- package/dist/commands/secrets.d.ts +0 -3
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js +0 -339
- package/dist/commands/secrets.js.map +0 -1
- package/dist/lib/__tests__/rotate.test.d.ts +0 -2
- package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
- package/dist/lib/__tests__/rotate.test.js +0 -80
- package/dist/lib/__tests__/rotate.test.js.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
- package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
- package/dist/lib/__tests__/secrets.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets.test.js +0 -90
- package/dist/lib/__tests__/secrets.test.js.map +0 -1
- package/dist/lib/__tests__/shims.test.d.ts +0 -2
- package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
- package/dist/lib/__tests__/shims.test.js +0 -39
- package/dist/lib/__tests__/shims.test.js.map +0 -1
- package/dist/lib/__tests__/versions.test.d.ts +0 -2
- package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
- package/dist/lib/__tests__/versions.test.js +0 -63
- package/dist/lib/__tests__/versions.test.js.map +0 -1
- package/dist/lib/cloud/codex.d.ts +0 -19
- package/dist/lib/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js +0 -210
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts +0 -26
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js +0 -37
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts +0 -6
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js +0 -56
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts +0 -15
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js +0 -185
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/store.d.ts +0 -10
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js +0 -96
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts +0 -18
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js +0 -138
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts +0 -60
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.js +0 -2
- package/dist/lib/cloud/types.js.map +0 -1
- package/dist/lib/profiles-keychain.d.ts +0 -3
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -10
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts +0 -15
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js +0 -95
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts +0 -35
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.js +0 -123
- package/dist/lib/profiles.js.map +0 -1
- package/dist/lib/rotate.d.ts +0 -52
- package/dist/lib/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.js +0 -87
- package/dist/lib/rotate.js.map +0 -1
- package/dist/lib/secrets-bundles.d.ts +0 -29
- package/dist/lib/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js +0 -168
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -27
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -127
- package/dist/lib/secrets.js.map +0 -1
- package/dist/lib/session/artifacts.d.ts +0 -5
- package/dist/lib/session/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.js +0 -75
- package/dist/lib/session/artifacts.js.map +0 -1
package/dist/lib/secrets.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export type SecretProvider = 'keychain' | 'env' | 'file' | 'exec';
|
|
2
|
-
export interface SecretRef {
|
|
3
|
-
provider: SecretProvider;
|
|
4
|
-
value: string;
|
|
5
|
-
}
|
|
6
|
-
export type BundleValue = string | {
|
|
7
|
-
value: string;
|
|
8
|
-
};
|
|
9
|
-
export declare function parseBundleValue(raw: BundleValue): {
|
|
10
|
-
literal: string;
|
|
11
|
-
} | {
|
|
12
|
-
ref: SecretRef;
|
|
13
|
-
};
|
|
14
|
-
export declare function serializeRef(ref: SecretRef): string;
|
|
15
|
-
export declare function profileKeychainItem(provider: string): string;
|
|
16
|
-
export declare function secretsKeychainItem(bundle: string, key: string): string;
|
|
17
|
-
export declare function hasKeychainToken(item: string): boolean;
|
|
18
|
-
export declare function getKeychainToken(item: string): string;
|
|
19
|
-
export declare function setKeychainToken(item: string, value: string): void;
|
|
20
|
-
export declare function deleteKeychainToken(item: string): boolean;
|
|
21
|
-
export interface ResolveOptions {
|
|
22
|
-
keychainItemFor?: (shortId: string) => string;
|
|
23
|
-
allowExec?: boolean;
|
|
24
|
-
envAllowlist?: string[];
|
|
25
|
-
}
|
|
26
|
-
export declare function resolveRef(ref: SecretRef, opts?: ResolveOptions): string;
|
|
27
|
-
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,CAU3F;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEnD;AASD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBrD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAclE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED,MAAM,WAAW,cAAc;IAI7B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAE9C,SAAS,CAAC,EAAE,OAAO,CAAC;IAIpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AASD,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CA4C5E"}
|
package/dist/lib/secrets.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { execFileSync, spawnSync } from 'child_process';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as os from 'os';
|
|
4
|
-
import * as path from 'path';
|
|
5
|
-
const SERVICE_PREFIX = 'agents-cli';
|
|
6
|
-
const REF_PATTERN = /^(keychain|env|file|exec):(.+)$/s;
|
|
7
|
-
export function parseBundleValue(raw) {
|
|
8
|
-
if (typeof raw === 'object' && raw !== null && typeof raw.value === 'string') {
|
|
9
|
-
return { literal: raw.value };
|
|
10
|
-
}
|
|
11
|
-
if (typeof raw !== 'string') {
|
|
12
|
-
throw new Error(`Invalid bundle value (expected string or {value: string}): ${JSON.stringify(raw)}`);
|
|
13
|
-
}
|
|
14
|
-
const match = REF_PATTERN.exec(raw);
|
|
15
|
-
if (!match)
|
|
16
|
-
return { literal: raw };
|
|
17
|
-
return { ref: { provider: match[1], value: match[2] } };
|
|
18
|
-
}
|
|
19
|
-
export function serializeRef(ref) {
|
|
20
|
-
return `${ref.provider}:${ref.value}`;
|
|
21
|
-
}
|
|
22
|
-
function assertMacOS() {
|
|
23
|
-
if (process.platform !== 'darwin') {
|
|
24
|
-
throw new Error('Keychain auth is macOS-only for now. Linux/Windows support is planned.');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
// Keychain items for profile tokens: agents-cli.<provider>.token
|
|
28
|
-
export function profileKeychainItem(provider) {
|
|
29
|
-
return `${SERVICE_PREFIX}.${provider}.token`;
|
|
30
|
-
}
|
|
31
|
-
// Keychain items for secrets bundles: agents-cli.secrets.<bundle>.<KEY>
|
|
32
|
-
export function secretsKeychainItem(bundle, key) {
|
|
33
|
-
return `${SERVICE_PREFIX}.secrets.${bundle}.${key}`;
|
|
34
|
-
}
|
|
35
|
-
export function hasKeychainToken(item) {
|
|
36
|
-
assertMacOS();
|
|
37
|
-
const result = spawnSync('security', ['find-generic-password', '-a', os.userInfo().username, '-s', item, '-w'], {
|
|
38
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
39
|
-
});
|
|
40
|
-
return result.status === 0;
|
|
41
|
-
}
|
|
42
|
-
export function getKeychainToken(item) {
|
|
43
|
-
assertMacOS();
|
|
44
|
-
try {
|
|
45
|
-
const token = execFileSync('security', ['find-generic-password', '-a', os.userInfo().username, '-s', item, '-w'], {
|
|
46
|
-
encoding: 'utf-8',
|
|
47
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
48
|
-
}).trim();
|
|
49
|
-
if (!token) {
|
|
50
|
-
throw new Error(`Keychain item '${item}' exists but is empty.`);
|
|
51
|
-
}
|
|
52
|
-
return token;
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
if (err.status === 44 || /could not be found/i.test(err.stderr?.toString() || '')) {
|
|
56
|
-
throw new Error(`Keychain item '${item}' not found.`);
|
|
57
|
-
}
|
|
58
|
-
throw new Error(`Failed to read keychain item '${item}': ${err.message}`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export function setKeychainToken(item, value) {
|
|
62
|
-
assertMacOS();
|
|
63
|
-
if (!value || !value.trim()) {
|
|
64
|
-
throw new Error('Secret value is empty.');
|
|
65
|
-
}
|
|
66
|
-
const user = os.userInfo().username;
|
|
67
|
-
const result = spawnSync('security', ['add-generic-password', '-a', user, '-s', item, '-w', value, '-U'], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
68
|
-
if (result.status !== 0) {
|
|
69
|
-
throw new Error(`Failed to write keychain item '${item}': ${result.stderr.toString()}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export function deleteKeychainToken(item) {
|
|
73
|
-
assertMacOS();
|
|
74
|
-
const result = spawnSync('security', ['delete-generic-password', '-a', os.userInfo().username, '-s', item], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
75
|
-
return result.status === 0;
|
|
76
|
-
}
|
|
77
|
-
function expandHome(p) {
|
|
78
|
-
if (p.startsWith('~/') || p === '~') {
|
|
79
|
-
return path.join(os.homedir(), p.slice(1));
|
|
80
|
-
}
|
|
81
|
-
return p;
|
|
82
|
-
}
|
|
83
|
-
export function resolveRef(ref, opts = {}) {
|
|
84
|
-
switch (ref.provider) {
|
|
85
|
-
case 'keychain': {
|
|
86
|
-
const item = opts.keychainItemFor ? opts.keychainItemFor(ref.value) : ref.value;
|
|
87
|
-
return getKeychainToken(item);
|
|
88
|
-
}
|
|
89
|
-
case 'env': {
|
|
90
|
-
const name = ref.value;
|
|
91
|
-
if (opts.envAllowlist && !opts.envAllowlist.includes(name)) {
|
|
92
|
-
throw new Error(`env: ref '${name}' not in allowlist.`);
|
|
93
|
-
}
|
|
94
|
-
const val = process.env[name];
|
|
95
|
-
if (val === undefined) {
|
|
96
|
-
throw new Error(`env: ref '${name}' not set in parent environment.`);
|
|
97
|
-
}
|
|
98
|
-
return val;
|
|
99
|
-
}
|
|
100
|
-
case 'file': {
|
|
101
|
-
const target = expandHome(ref.value);
|
|
102
|
-
if (!fs.existsSync(target)) {
|
|
103
|
-
throw new Error(`file: ref '${ref.value}' does not exist.`);
|
|
104
|
-
}
|
|
105
|
-
return fs.readFileSync(target, 'utf-8').trim();
|
|
106
|
-
}
|
|
107
|
-
case 'exec': {
|
|
108
|
-
if (!opts.allowExec) {
|
|
109
|
-
throw new Error(`exec: ref '${ref.value}' blocked. Set 'allow_exec: true' in the bundle to enable.`);
|
|
110
|
-
}
|
|
111
|
-
// shell: false — the bundle author controls the command; no injection
|
|
112
|
-
// from secret identifiers. Parse a simple space-separated command.
|
|
113
|
-
const parts = ref.value.match(/(?:[^\s"]+|"[^"]*")+/g)?.map((p) => p.replace(/^"|"$/g, '')) || [];
|
|
114
|
-
if (parts.length === 0) {
|
|
115
|
-
throw new Error(`exec: ref '${ref.value}' is empty.`);
|
|
116
|
-
}
|
|
117
|
-
const [cmd, ...args] = parts;
|
|
118
|
-
try {
|
|
119
|
-
return execFileSync(cmd, args, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
|
|
120
|
-
}
|
|
121
|
-
catch (err) {
|
|
122
|
-
throw new Error(`exec: ref '${ref.value}' failed: ${err.message}`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=secrets.js.map
|
package/dist/lib/secrets.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { SessionMeta, SessionArtifact } from './types.js';
|
|
2
|
-
export declare function discoverArtifacts(meta: SessionMeta): SessionArtifact[];
|
|
3
|
-
export declare function readArtifact(artifact: SessionArtifact): string;
|
|
4
|
-
export declare function resolveArtifact(artifacts: SessionArtifact[], name: string): SessionArtifact | null;
|
|
5
|
-
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAO/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,EAAE,CAiDtE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,IAAI,EAAE,MAAM,GACX,eAAe,GAAG,IAAI,CAexB"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { parseSession } from './parse.js';
|
|
4
|
-
const WRITE_TOOLS = new Set([
|
|
5
|
-
'Write', 'Edit', 'write_file', 'edit_file', 'create_file', 'replace', 'patch',
|
|
6
|
-
]);
|
|
7
|
-
export function discoverArtifacts(meta) {
|
|
8
|
-
let events;
|
|
9
|
-
try {
|
|
10
|
-
events = parseSession(meta.filePath, meta.agent);
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return [];
|
|
14
|
-
}
|
|
15
|
-
// Map path -> last write event (later occurrence wins for dedup)
|
|
16
|
-
const latestByPath = new Map();
|
|
17
|
-
for (const event of events) {
|
|
18
|
-
if (event.type !== 'tool_use')
|
|
19
|
-
continue;
|
|
20
|
-
const tool = event.tool || '';
|
|
21
|
-
if (!WRITE_TOOLS.has(tool))
|
|
22
|
-
continue;
|
|
23
|
-
const p = event.path
|
|
24
|
-
|| event.args?.file_path
|
|
25
|
-
|| event.args?.path
|
|
26
|
-
|| event.args?.filePath
|
|
27
|
-
|| '';
|
|
28
|
-
if (!p)
|
|
29
|
-
continue;
|
|
30
|
-
latestByPath.set(p, { tool, timestamp: event.timestamp });
|
|
31
|
-
}
|
|
32
|
-
const artifacts = [];
|
|
33
|
-
for (const [p, { tool, timestamp }] of latestByPath) {
|
|
34
|
-
let exists = false;
|
|
35
|
-
let sizeBytes;
|
|
36
|
-
try {
|
|
37
|
-
const stat = fs.statSync(p);
|
|
38
|
-
exists = true;
|
|
39
|
-
sizeBytes = stat.size;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
// file gone or inaccessible
|
|
43
|
-
}
|
|
44
|
-
artifacts.push({
|
|
45
|
-
path: p,
|
|
46
|
-
tool,
|
|
47
|
-
timestamp,
|
|
48
|
-
exists,
|
|
49
|
-
sizeBytes: exists ? sizeBytes : undefined,
|
|
50
|
-
sessionId: meta.id,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
return artifacts;
|
|
54
|
-
}
|
|
55
|
-
export function readArtifact(artifact) {
|
|
56
|
-
return fs.readFileSync(artifact.path, 'utf-8');
|
|
57
|
-
}
|
|
58
|
-
export function resolveArtifact(artifacts, name) {
|
|
59
|
-
// Exact path match
|
|
60
|
-
const exact = artifacts.find(a => a.path === name);
|
|
61
|
-
if (exact)
|
|
62
|
-
return exact;
|
|
63
|
-
// Basename match
|
|
64
|
-
const byBase = artifacts.filter(a => path.basename(a.path) === name);
|
|
65
|
-
if (byBase.length === 1)
|
|
66
|
-
return byBase[0];
|
|
67
|
-
if (byBase.length > 1)
|
|
68
|
-
return byBase[0];
|
|
69
|
-
// Path suffix match (e.g. "src/foo.ts")
|
|
70
|
-
const bySuffix = artifacts.filter(a => a.path.endsWith('/' + name) || a.path === name);
|
|
71
|
-
if (bySuffix.length >= 1)
|
|
72
|
-
return bySuffix[0];
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=artifacts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/lib/session/artifacts.ts"],"names":[],"mappings":"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"}
|