@vibecompany/247-cli 0.1.0 → 0.2.3
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/agent/dist/config.d.ts +29 -0
- package/agent/dist/config.d.ts.map +1 -0
- package/agent/dist/config.js +56 -0
- package/agent/dist/config.js.map +1 -0
- package/agent/dist/db/environments.d.ts +65 -0
- package/agent/dist/db/environments.d.ts.map +1 -0
- package/agent/dist/db/environments.js +243 -0
- package/agent/dist/db/environments.js.map +1 -0
- package/agent/dist/db/history.d.ts +37 -0
- package/agent/dist/db/history.d.ts.map +1 -0
- package/agent/dist/db/history.js +98 -0
- package/agent/dist/db/history.js.map +1 -0
- package/agent/dist/db/index.d.ts +37 -0
- package/agent/dist/db/index.d.ts.map +1 -0
- package/agent/dist/db/index.js +225 -0
- package/agent/dist/db/index.js.map +1 -0
- package/agent/dist/db/schema.d.ts +70 -0
- package/agent/dist/db/schema.d.ts.map +1 -0
- package/agent/dist/db/schema.js +79 -0
- package/agent/dist/db/schema.js.map +1 -0
- package/agent/dist/db/sessions.d.ts +75 -0
- package/agent/dist/db/sessions.d.ts.map +1 -0
- package/agent/dist/db/sessions.js +244 -0
- package/agent/dist/db/sessions.js.map +1 -0
- package/agent/dist/editor.d.ts +18 -0
- package/agent/dist/editor.d.ts.map +1 -0
- package/agent/dist/editor.js +220 -0
- package/agent/dist/editor.js.map +1 -0
- package/agent/dist/environments.d.ts +59 -0
- package/agent/dist/environments.d.ts.map +1 -0
- package/agent/dist/environments.js +229 -0
- package/agent/dist/environments.js.map +1 -0
- package/agent/dist/git.d.ts +39 -0
- package/agent/dist/git.d.ts.map +1 -0
- package/agent/dist/git.js +436 -0
- package/agent/dist/git.js.map +1 -0
- package/agent/dist/index.d.ts +2 -0
- package/agent/dist/index.d.ts.map +1 -0
- package/agent/dist/index.js +17 -0
- package/agent/dist/index.js.map +1 -0
- package/agent/dist/server.d.ts +2 -0
- package/agent/dist/server.d.ts.map +1 -0
- package/agent/dist/server.js +1062 -0
- package/agent/dist/server.js.map +1 -0
- package/agent/dist/terminal.d.ts +14 -0
- package/agent/dist/terminal.d.ts.map +1 -0
- package/agent/dist/terminal.js +115 -0
- package/agent/dist/terminal.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/profile.d.ts +3 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +156 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +21 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +30 -5
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +85 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/process.d.ts +2 -1
- package/dist/lib/process.d.ts.map +1 -1
- package/dist/lib/process.js +7 -3
- package/dist/lib/process.js.map +1 -1
- package/hooks/.claude-plugin/plugin.json +5 -0
- package/hooks/hooks/hooks.json +61 -0
- package/hooks/scripts/notify-status.sh +89 -0
- package/package.json +22 -5
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAqB9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,11 +9,13 @@ import { serviceCommand } from './commands/service.js';
|
|
|
9
9
|
import { hooksCommand } from './commands/hooks.js';
|
|
10
10
|
import { updateCommand } from './commands/update.js';
|
|
11
11
|
import { doctorCommand } from './commands/doctor.js';
|
|
12
|
+
import { profileCommand } from './commands/profile.js';
|
|
12
13
|
const program = new Command();
|
|
13
14
|
program
|
|
14
15
|
.name('247')
|
|
15
16
|
.description('247 - Access Claude Code from anywhere 24/7\nby The Vibe Company')
|
|
16
|
-
.version('0.1.0')
|
|
17
|
+
.version('0.1.0')
|
|
18
|
+
.option('-P, --profile <name>', 'Use a specific profile (dev, prod, etc.)');
|
|
17
19
|
// Add commands
|
|
18
20
|
program.addCommand(initCommand);
|
|
19
21
|
program.addCommand(startCommand);
|
|
@@ -24,6 +26,9 @@ program.addCommand(serviceCommand);
|
|
|
24
26
|
program.addCommand(hooksCommand);
|
|
25
27
|
program.addCommand(updateCommand);
|
|
26
28
|
program.addCommand(doctorCommand);
|
|
29
|
+
program.addCommand(profileCommand);
|
|
30
|
+
// Export program for use in subcommands (to access global options)
|
|
31
|
+
export { program };
|
|
27
32
|
// Default action (no command)
|
|
28
33
|
program.action(() => {
|
|
29
34
|
console.log(`
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,kEAAkE,CAAC;KAC/E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,sBAAsB,EAAE,0CAA0C,CAAC,CAAC;AAE9E,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,mEAAmE;AACnE,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,8BAA8B;AAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC;;;;;CAKb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -20,13 +20,37 @@ export interface AgentConfig {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Get the profiles directory path
|
|
24
24
|
*/
|
|
25
|
-
export declare function
|
|
25
|
+
export declare function getProfilesDir(): string;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Get the config file path for a specific profile
|
|
28
|
+
* @param profileName - Profile name, or undefined/null/'default' for default config
|
|
28
29
|
*/
|
|
29
|
-
export declare function
|
|
30
|
+
export declare function getProfilePath(profileName?: string | null): string;
|
|
31
|
+
/**
|
|
32
|
+
* List all available profiles
|
|
33
|
+
*/
|
|
34
|
+
export declare function listProfiles(): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Check if a profile exists
|
|
37
|
+
*/
|
|
38
|
+
export declare function profileExists(profileName?: string | null): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Delete a profile
|
|
41
|
+
*/
|
|
42
|
+
export declare function deleteProfile(profileName: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Load configuration from ~/.247/config.json or a profile
|
|
45
|
+
* @param profileName - Profile name to load, or undefined for default
|
|
46
|
+
*/
|
|
47
|
+
export declare function loadConfig(profileName?: string | null): AgentConfig | null;
|
|
48
|
+
/**
|
|
49
|
+
* Save configuration to ~/.247/config.json or a profile
|
|
50
|
+
* @param config - Configuration to save
|
|
51
|
+
* @param profileName - Profile name to save to, or undefined for default
|
|
52
|
+
*/
|
|
53
|
+
export declare function saveConfig(config: AgentConfig, profileName?: string | null): void;
|
|
30
54
|
/**
|
|
31
55
|
* Create a new configuration with defaults
|
|
32
56
|
*/
|
|
@@ -37,8 +61,9 @@ export declare function createConfig(options: {
|
|
|
37
61
|
}): AgentConfig;
|
|
38
62
|
/**
|
|
39
63
|
* Check if configuration exists
|
|
64
|
+
* @param profileName - Profile name to check, or undefined for default
|
|
40
65
|
*/
|
|
41
|
-
export declare function configExists(): boolean;
|
|
66
|
+
export declare function configExists(profileName?: string | null): boolean;
|
|
42
67
|
/**
|
|
43
68
|
* Get default configuration
|
|
44
69
|
*/
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAqBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQlE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAsBvC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAGlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAY1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAwB1E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAcjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,WAAW,CAed;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAGjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAE9C"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
2
3
|
import { randomUUID } from 'crypto';
|
|
3
4
|
import { getAgentPaths, ensureDirectories } from './paths.js';
|
|
4
5
|
const DEFAULT_CONFIG = {
|
|
@@ -20,15 +21,77 @@ const DEFAULT_CONFIG = {
|
|
|
20
21
|
},
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
+
* Get the profiles directory path
|
|
24
25
|
*/
|
|
25
|
-
export function
|
|
26
|
+
export function getProfilesDir() {
|
|
26
27
|
const paths = getAgentPaths();
|
|
27
|
-
|
|
28
|
+
return join(paths.configDir, 'profiles');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the config file path for a specific profile
|
|
32
|
+
* @param profileName - Profile name, or undefined/null/'default' for default config
|
|
33
|
+
*/
|
|
34
|
+
export function getProfilePath(profileName) {
|
|
35
|
+
const paths = getAgentPaths();
|
|
36
|
+
if (!profileName || profileName === 'default') {
|
|
37
|
+
return paths.configPath;
|
|
38
|
+
}
|
|
39
|
+
return join(getProfilesDir(), `${profileName}.json`);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* List all available profiles
|
|
43
|
+
*/
|
|
44
|
+
export function listProfiles() {
|
|
45
|
+
const paths = getAgentPaths();
|
|
46
|
+
const profilesDir = getProfilesDir();
|
|
47
|
+
const profiles = [];
|
|
48
|
+
// Add default profile if it exists
|
|
49
|
+
if (existsSync(paths.configPath)) {
|
|
50
|
+
profiles.push('default');
|
|
51
|
+
}
|
|
52
|
+
// Add named profiles
|
|
53
|
+
if (existsSync(profilesDir)) {
|
|
54
|
+
const files = readdirSync(profilesDir);
|
|
55
|
+
for (const file of files) {
|
|
56
|
+
if (file.endsWith('.json')) {
|
|
57
|
+
profiles.push(file.replace('.json', ''));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return profiles;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if a profile exists
|
|
65
|
+
*/
|
|
66
|
+
export function profileExists(profileName) {
|
|
67
|
+
const configPath = getProfilePath(profileName);
|
|
68
|
+
return existsSync(configPath);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Delete a profile
|
|
72
|
+
*/
|
|
73
|
+
export function deleteProfile(profileName) {
|
|
74
|
+
if (!profileName || profileName === 'default') {
|
|
75
|
+
throw new Error('Cannot delete default profile');
|
|
76
|
+
}
|
|
77
|
+
const configPath = getProfilePath(profileName);
|
|
78
|
+
if (!existsSync(configPath)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
unlinkSync(configPath);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load configuration from ~/.247/config.json or a profile
|
|
86
|
+
* @param profileName - Profile name to load, or undefined for default
|
|
87
|
+
*/
|
|
88
|
+
export function loadConfig(profileName) {
|
|
89
|
+
const configPath = getProfilePath(profileName);
|
|
90
|
+
if (!existsSync(configPath)) {
|
|
28
91
|
return null;
|
|
29
92
|
}
|
|
30
93
|
try {
|
|
31
|
-
const content = readFileSync(
|
|
94
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
32
95
|
const config = JSON.parse(content);
|
|
33
96
|
// Apply environment overrides
|
|
34
97
|
if (process.env.AGENT_247_PORT) {
|
|
@@ -45,13 +108,22 @@ export function loadConfig() {
|
|
|
45
108
|
}
|
|
46
109
|
}
|
|
47
110
|
/**
|
|
48
|
-
* Save configuration to ~/.247/config.json
|
|
111
|
+
* Save configuration to ~/.247/config.json or a profile
|
|
112
|
+
* @param config - Configuration to save
|
|
113
|
+
* @param profileName - Profile name to save to, or undefined for default
|
|
49
114
|
*/
|
|
50
|
-
export function saveConfig(config) {
|
|
51
|
-
const
|
|
115
|
+
export function saveConfig(config, profileName) {
|
|
116
|
+
const configPath = getProfilePath(profileName);
|
|
52
117
|
ensureDirectories();
|
|
118
|
+
// Ensure profiles directory exists for named profiles
|
|
119
|
+
if (profileName && profileName !== 'default') {
|
|
120
|
+
const profilesDir = getProfilesDir();
|
|
121
|
+
if (!existsSync(profilesDir)) {
|
|
122
|
+
mkdirSync(profilesDir, { recursive: true });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
53
125
|
const content = JSON.stringify(config, null, 2);
|
|
54
|
-
writeFileSync(
|
|
126
|
+
writeFileSync(configPath, content, 'utf-8');
|
|
55
127
|
}
|
|
56
128
|
/**
|
|
57
129
|
* Create a new configuration with defaults
|
|
@@ -74,10 +146,11 @@ export function createConfig(options) {
|
|
|
74
146
|
}
|
|
75
147
|
/**
|
|
76
148
|
* Check if configuration exists
|
|
149
|
+
* @param profileName - Profile name to check, or undefined for default
|
|
77
150
|
*/
|
|
78
|
-
export function configExists() {
|
|
79
|
-
const
|
|
80
|
-
return existsSync(
|
|
151
|
+
export function configExists(profileName) {
|
|
152
|
+
const configPath = getProfilePath(profileName);
|
|
153
|
+
return existsSync(configPath);
|
|
81
154
|
}
|
|
82
155
|
/**
|
|
83
156
|
* Get default configuration
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/process.d.ts
CHANGED
|
@@ -7,8 +7,9 @@ export declare function isAgentRunning(): {
|
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* Start the agent as a background daemon
|
|
10
|
+
* @param profileName - Optional profile name to use
|
|
10
11
|
*/
|
|
11
|
-
export declare function startAgentDaemon(): Promise<{
|
|
12
|
+
export declare function startAgentDaemon(profileName?: string | null): Promise<{
|
|
12
13
|
success: boolean;
|
|
13
14
|
pid?: number;
|
|
14
15
|
error?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BnE;AAED
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BnE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgF/H;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAqDhE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUhG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAWD"}
|
package/dist/lib/process.js
CHANGED
|
@@ -39,11 +39,15 @@ export function isAgentRunning() {
|
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Start the agent as a background daemon
|
|
42
|
+
* @param profileName - Optional profile name to use
|
|
42
43
|
*/
|
|
43
|
-
export async function startAgentDaemon() {
|
|
44
|
+
export async function startAgentDaemon(profileName) {
|
|
44
45
|
const paths = getAgentPaths();
|
|
45
|
-
const config = loadConfig();
|
|
46
|
+
const config = loadConfig(profileName);
|
|
46
47
|
if (!config) {
|
|
48
|
+
if (profileName) {
|
|
49
|
+
return { success: false, error: `Profile '${profileName}' not found. Run: 247 profile create ${profileName}` };
|
|
50
|
+
}
|
|
47
51
|
return { success: false, error: 'Configuration not found. Run: 247 init' };
|
|
48
52
|
}
|
|
49
53
|
// Check if already running
|
|
@@ -84,8 +88,8 @@ export async function startAgentDaemon() {
|
|
|
84
88
|
stdio: ['ignore', stdout, stderr],
|
|
85
89
|
env: {
|
|
86
90
|
...process.env,
|
|
87
|
-
AGENT_247_CONFIG: paths.configPath,
|
|
88
91
|
AGENT_247_DATA: paths.dataDir,
|
|
92
|
+
AGENT_247_PROFILE: profileName || '',
|
|
89
93
|
},
|
|
90
94
|
});
|
|
91
95
|
if (!child.pid) {
|
package/dist/lib/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;YACjD,IAAI,CAAC;gBACH,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Simplified status tracking hooks for 247",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"SessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/notify-status.sh",
|
|
10
|
+
"timeout": 5000
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"PermissionRequest": [
|
|
16
|
+
{
|
|
17
|
+
"matcher": "*",
|
|
18
|
+
"hooks": [
|
|
19
|
+
{
|
|
20
|
+
"type": "command",
|
|
21
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/notify-status.sh",
|
|
22
|
+
"timeout": 5000
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"Stop": [
|
|
28
|
+
{
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "command",
|
|
32
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/notify-status.sh",
|
|
33
|
+
"timeout": 5000
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"Notification": [
|
|
39
|
+
{
|
|
40
|
+
"hooks": [
|
|
41
|
+
{
|
|
42
|
+
"type": "command",
|
|
43
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/notify-status.sh",
|
|
44
|
+
"timeout": 5000
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"SessionEnd": [
|
|
50
|
+
{
|
|
51
|
+
"hooks": [
|
|
52
|
+
{
|
|
53
|
+
"type": "command",
|
|
54
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/notify-status.sh",
|
|
55
|
+
"timeout": 5000
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Read stdin for hook input
|
|
5
|
+
INPUT=$(cat)
|
|
6
|
+
|
|
7
|
+
# Extract event details from JSON
|
|
8
|
+
EVENT=$(echo "$INPUT" | jq -r '.hook_event_name // "unknown"' 2>/dev/null || echo "unknown")
|
|
9
|
+
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // ""' 2>/dev/null || echo "")
|
|
10
|
+
NOTIFICATION_TYPE=$(echo "$INPUT" | jq -r '.notification_type // ""' 2>/dev/null || echo "")
|
|
11
|
+
STOP_REASON=$(echo "$INPUT" | jq -r '.stop_reason // ""' 2>/dev/null || echo "")
|
|
12
|
+
CWD=$(echo "$INPUT" | jq -r '.cwd // ""' 2>/dev/null || echo "")
|
|
13
|
+
|
|
14
|
+
# Detect tmux session name
|
|
15
|
+
# Priority 1: CLAUDE_TMUX_SESSION env var (set by agent - most reliable)
|
|
16
|
+
TMUX_SESSION="${CLAUDE_TMUX_SESSION:-}"
|
|
17
|
+
|
|
18
|
+
# Priority 2: If not set, try tmux display-message (only if in tmux context)
|
|
19
|
+
if [ -z "$TMUX_SESSION" ] && [ -n "${TMUX:-}" ]; then
|
|
20
|
+
TMUX_SESSION=$(tmux display-message -p '#{session_name}' 2>/dev/null || echo "")
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# If still no session detected, log warning but continue
|
|
24
|
+
if [ -z "$TMUX_SESSION" ]; then
|
|
25
|
+
echo "[WARN] Could not detect tmux session for hook $EVENT" >&2
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Map events to simplified status model
|
|
29
|
+
# Status: working | needs_attention | idle
|
|
30
|
+
# AttentionReason: permission | input | plan_approval | task_complete
|
|
31
|
+
STATUS="working"
|
|
32
|
+
ATTENTION_REASON=""
|
|
33
|
+
|
|
34
|
+
case "$EVENT" in
|
|
35
|
+
"SessionStart")
|
|
36
|
+
STATUS="working"
|
|
37
|
+
;;
|
|
38
|
+
"PermissionRequest")
|
|
39
|
+
STATUS="needs_attention"
|
|
40
|
+
ATTENTION_REASON="permission"
|
|
41
|
+
;;
|
|
42
|
+
"Stop")
|
|
43
|
+
STATUS="needs_attention"
|
|
44
|
+
# end_turn means Claude is waiting for user input
|
|
45
|
+
# Otherwise, task is complete
|
|
46
|
+
if [ "$STOP_REASON" = "end_turn" ]; then
|
|
47
|
+
ATTENTION_REASON="input"
|
|
48
|
+
else
|
|
49
|
+
ATTENTION_REASON="task_complete"
|
|
50
|
+
fi
|
|
51
|
+
;;
|
|
52
|
+
"Notification")
|
|
53
|
+
# idle_prompt notification means Claude is waiting for user input
|
|
54
|
+
if [ "$NOTIFICATION_TYPE" = "idle_prompt" ]; then
|
|
55
|
+
STATUS="needs_attention"
|
|
56
|
+
ATTENTION_REASON="input"
|
|
57
|
+
fi
|
|
58
|
+
;;
|
|
59
|
+
"SessionEnd")
|
|
60
|
+
STATUS="idle"
|
|
61
|
+
;;
|
|
62
|
+
*)
|
|
63
|
+
# Unknown event, default to working
|
|
64
|
+
STATUS="working"
|
|
65
|
+
;;
|
|
66
|
+
esac
|
|
67
|
+
|
|
68
|
+
# Extract project name from cwd (last component of path)
|
|
69
|
+
PROJECT=$(basename "$CWD" 2>/dev/null || echo "")
|
|
70
|
+
|
|
71
|
+
# Get current timestamp in milliseconds
|
|
72
|
+
TIMESTAMP=$(($(date +%s) * 1000))
|
|
73
|
+
|
|
74
|
+
# Send status update to local agent
|
|
75
|
+
# Note: Use || true to ensure we never block Claude execution
|
|
76
|
+
curl -s -X POST "http://localhost:4678/api/hooks/status" \
|
|
77
|
+
-H "Content-Type: application/json" \
|
|
78
|
+
-d "{
|
|
79
|
+
\"event\": \"$EVENT\",
|
|
80
|
+
\"status\": \"$STATUS\",
|
|
81
|
+
\"attention_reason\": \"$ATTENTION_REASON\",
|
|
82
|
+
\"session_id\": \"$SESSION_ID\",
|
|
83
|
+
\"tmux_session\": \"$TMUX_SESSION\",
|
|
84
|
+
\"project\": \"$PROJECT\",
|
|
85
|
+
\"timestamp\": $TIMESTAMP
|
|
86
|
+
}" > /dev/null 2>&1 || true
|
|
87
|
+
|
|
88
|
+
# Exit successfully (never block Claude)
|
|
89
|
+
exit 0
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibecompany/247-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "247 - Access Claude Code from anywhere 24/7",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"claude",
|
|
7
|
+
"terminal",
|
|
8
|
+
"remote",
|
|
9
|
+
"ai",
|
|
10
|
+
"cli",
|
|
11
|
+
"247",
|
|
12
|
+
"vibecompany"
|
|
13
|
+
],
|
|
6
14
|
"license": "MIT",
|
|
7
15
|
"author": "The Vibe Company",
|
|
8
16
|
"repository": {
|
|
@@ -18,20 +26,29 @@
|
|
|
18
26
|
"engines": {
|
|
19
27
|
"node": ">=22.0.0"
|
|
20
28
|
},
|
|
21
|
-
"os": [
|
|
22
|
-
|
|
29
|
+
"os": [
|
|
30
|
+
"darwin",
|
|
31
|
+
"linux"
|
|
32
|
+
],
|
|
33
|
+
"cpu": [
|
|
34
|
+
"x64",
|
|
35
|
+
"arm64"
|
|
36
|
+
],
|
|
23
37
|
"bin": {
|
|
24
38
|
"247": "./dist/index.js"
|
|
25
39
|
},
|
|
26
40
|
"files": [
|
|
27
41
|
"dist",
|
|
42
|
+
"hooks",
|
|
43
|
+
"agent",
|
|
28
44
|
"README.md"
|
|
29
45
|
],
|
|
30
46
|
"scripts": {
|
|
31
47
|
"dev": "tsx src/index.ts",
|
|
32
48
|
"build": "tsc",
|
|
49
|
+
"bundle": "bash scripts/bundle.sh",
|
|
33
50
|
"typecheck": "tsc --noEmit",
|
|
34
|
-
"prepublishOnly": "
|
|
51
|
+
"prepublishOnly": "pnpm build && pnpm bundle"
|
|
35
52
|
},
|
|
36
53
|
"dependencies": {
|
|
37
54
|
"commander": "^12.0.0",
|