@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.
Files changed (145) hide show
  1. package/README.md +14 -96
  2. package/dist/commands/exec.d.ts.map +1 -1
  3. package/dist/commands/exec.js +17 -135
  4. package/dist/commands/exec.js.map +1 -1
  5. package/dist/commands/models.d.ts.map +1 -1
  6. package/dist/commands/models.js +3 -30
  7. package/dist/commands/models.js.map +1 -1
  8. package/dist/commands/pull.d.ts.map +1 -1
  9. package/dist/commands/pull.js +3 -37
  10. package/dist/commands/pull.js.map +1 -1
  11. package/dist/commands/sessions.d.ts.map +1 -1
  12. package/dist/commands/sessions.js +0 -100
  13. package/dist/commands/sessions.js.map +1 -1
  14. package/dist/commands/view.d.ts.map +1 -1
  15. package/dist/commands/view.js +2 -42
  16. package/dist/commands/view.js.map +1 -1
  17. package/dist/index.js +8 -37
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/__tests__/hooks.test.js +2 -2
  20. package/dist/lib/__tests__/hooks.test.js.map +1 -1
  21. package/dist/lib/__tests__/models.test.js +1 -56
  22. package/dist/lib/__tests__/models.test.js.map +1 -1
  23. package/dist/lib/__tests__/usage.test.js +2 -4
  24. package/dist/lib/__tests__/usage.test.js.map +1 -1
  25. package/dist/lib/agents.d.ts.map +1 -1
  26. package/dist/lib/agents.js +2 -10
  27. package/dist/lib/agents.js.map +1 -1
  28. package/dist/lib/exec.d.ts +1 -4
  29. package/dist/lib/exec.d.ts.map +1 -1
  30. package/dist/lib/exec.js +15 -24
  31. package/dist/lib/exec.js.map +1 -1
  32. package/dist/lib/hooks.d.ts.map +1 -1
  33. package/dist/lib/hooks.js +1 -153
  34. package/dist/lib/hooks.js.map +1 -1
  35. package/dist/lib/models.d.ts +10 -18
  36. package/dist/lib/models.d.ts.map +1 -1
  37. package/dist/lib/models.js +12 -380
  38. package/dist/lib/models.js.map +1 -1
  39. package/dist/lib/session/types.d.ts +0 -8
  40. package/dist/lib/session/types.d.ts.map +1 -1
  41. package/dist/lib/shims.d.ts +2 -31
  42. package/dist/lib/shims.d.ts.map +1 -1
  43. package/dist/lib/shims.js +24 -75
  44. package/dist/lib/shims.js.map +1 -1
  45. package/dist/lib/state.d.ts +0 -7
  46. package/dist/lib/state.d.ts.map +1 -1
  47. package/dist/lib/state.js +1 -14
  48. package/dist/lib/state.js.map +1 -1
  49. package/dist/lib/usage.d.ts +0 -16
  50. package/dist/lib/usage.d.ts.map +1 -1
  51. package/dist/lib/usage.js +10 -27
  52. package/dist/lib/usage.js.map +1 -1
  53. package/dist/lib/versions.d.ts +1 -7
  54. package/dist/lib/versions.d.ts.map +1 -1
  55. package/dist/lib/versions.js +8 -30
  56. package/dist/lib/versions.js.map +1 -1
  57. package/package.json +2 -2
  58. package/dist/commands/cloud.d.ts +0 -3
  59. package/dist/commands/cloud.d.ts.map +0 -1
  60. package/dist/commands/cloud.js +0 -322
  61. package/dist/commands/cloud.js.map +0 -1
  62. package/dist/commands/profiles.d.ts +0 -3
  63. package/dist/commands/profiles.d.ts.map +0 -1
  64. package/dist/commands/profiles.js +0 -242
  65. package/dist/commands/profiles.js.map +0 -1
  66. package/dist/commands/secrets.d.ts +0 -3
  67. package/dist/commands/secrets.d.ts.map +0 -1
  68. package/dist/commands/secrets.js +0 -339
  69. package/dist/commands/secrets.js.map +0 -1
  70. package/dist/lib/__tests__/rotate.test.d.ts +0 -2
  71. package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
  72. package/dist/lib/__tests__/rotate.test.js +0 -80
  73. package/dist/lib/__tests__/rotate.test.js.map +0 -1
  74. package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
  75. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
  76. package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
  77. package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
  78. package/dist/lib/__tests__/secrets.test.d.ts +0 -2
  79. package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
  80. package/dist/lib/__tests__/secrets.test.js +0 -90
  81. package/dist/lib/__tests__/secrets.test.js.map +0 -1
  82. package/dist/lib/__tests__/shims.test.d.ts +0 -2
  83. package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
  84. package/dist/lib/__tests__/shims.test.js +0 -39
  85. package/dist/lib/__tests__/shims.test.js.map +0 -1
  86. package/dist/lib/__tests__/versions.test.d.ts +0 -2
  87. package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
  88. package/dist/lib/__tests__/versions.test.js +0 -63
  89. package/dist/lib/__tests__/versions.test.js.map +0 -1
  90. package/dist/lib/cloud/codex.d.ts +0 -19
  91. package/dist/lib/cloud/codex.d.ts.map +0 -1
  92. package/dist/lib/cloud/codex.js +0 -210
  93. package/dist/lib/cloud/codex.js.map +0 -1
  94. package/dist/lib/cloud/factory.d.ts +0 -26
  95. package/dist/lib/cloud/factory.d.ts.map +0 -1
  96. package/dist/lib/cloud/factory.js +0 -37
  97. package/dist/lib/cloud/factory.js.map +0 -1
  98. package/dist/lib/cloud/registry.d.ts +0 -6
  99. package/dist/lib/cloud/registry.d.ts.map +0 -1
  100. package/dist/lib/cloud/registry.js +0 -56
  101. package/dist/lib/cloud/registry.js.map +0 -1
  102. package/dist/lib/cloud/rush.d.ts +0 -15
  103. package/dist/lib/cloud/rush.d.ts.map +0 -1
  104. package/dist/lib/cloud/rush.js +0 -185
  105. package/dist/lib/cloud/rush.js.map +0 -1
  106. package/dist/lib/cloud/store.d.ts +0 -10
  107. package/dist/lib/cloud/store.d.ts.map +0 -1
  108. package/dist/lib/cloud/store.js +0 -96
  109. package/dist/lib/cloud/store.js.map +0 -1
  110. package/dist/lib/cloud/stream.d.ts +0 -18
  111. package/dist/lib/cloud/stream.d.ts.map +0 -1
  112. package/dist/lib/cloud/stream.js +0 -138
  113. package/dist/lib/cloud/stream.js.map +0 -1
  114. package/dist/lib/cloud/types.d.ts +0 -60
  115. package/dist/lib/cloud/types.d.ts.map +0 -1
  116. package/dist/lib/cloud/types.js +0 -2
  117. package/dist/lib/cloud/types.js.map +0 -1
  118. package/dist/lib/profiles-keychain.d.ts +0 -3
  119. package/dist/lib/profiles-keychain.d.ts.map +0 -1
  120. package/dist/lib/profiles-keychain.js +0 -10
  121. package/dist/lib/profiles-keychain.js.map +0 -1
  122. package/dist/lib/profiles-presets.d.ts +0 -15
  123. package/dist/lib/profiles-presets.d.ts.map +0 -1
  124. package/dist/lib/profiles-presets.js +0 -95
  125. package/dist/lib/profiles-presets.js.map +0 -1
  126. package/dist/lib/profiles.d.ts +0 -35
  127. package/dist/lib/profiles.d.ts.map +0 -1
  128. package/dist/lib/profiles.js +0 -123
  129. package/dist/lib/profiles.js.map +0 -1
  130. package/dist/lib/rotate.d.ts +0 -52
  131. package/dist/lib/rotate.d.ts.map +0 -1
  132. package/dist/lib/rotate.js +0 -87
  133. package/dist/lib/rotate.js.map +0 -1
  134. package/dist/lib/secrets-bundles.d.ts +0 -29
  135. package/dist/lib/secrets-bundles.d.ts.map +0 -1
  136. package/dist/lib/secrets-bundles.js +0 -168
  137. package/dist/lib/secrets-bundles.js.map +0 -1
  138. package/dist/lib/secrets.d.ts +0 -27
  139. package/dist/lib/secrets.d.ts.map +0 -1
  140. package/dist/lib/secrets.js +0 -127
  141. package/dist/lib/secrets.js.map +0 -1
  142. package/dist/lib/session/artifacts.d.ts +0 -5
  143. package/dist/lib/session/artifacts.d.ts.map +0 -1
  144. package/dist/lib/session/artifacts.js +0 -75
  145. package/dist/lib/session/artifacts.js.map +0 -1
@@ -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"}
@@ -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
@@ -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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"}