chatroom-cli 1.0.36 → 1.0.37
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/dist/convex-api/api.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type * as cleanupTasks from "../cleanupTasks.js";
|
|
|
18
18
|
import type * as cliAuth from "../cliAuth.js";
|
|
19
19
|
import type * as crypto from "../crypto.js";
|
|
20
20
|
import type * as discussions from "../discussions.js";
|
|
21
|
+
import type * as guidelines from "../guidelines.js";
|
|
21
22
|
import type * as lib_cliSessionAuth from "../lib/cliSessionAuth.js";
|
|
22
23
|
import type * as lib_hierarchy from "../lib/hierarchy.js";
|
|
23
24
|
import type * as messages from "../messages.js";
|
|
@@ -25,12 +26,18 @@ import type * as migration from "../migration.js";
|
|
|
25
26
|
import type * as participants from "../participants.js";
|
|
26
27
|
import type * as presentations from "../presentations.js";
|
|
27
28
|
import type * as prompts_generator from "../prompts/generator.js";
|
|
29
|
+
import type * as prompts_guidelines_index from "../prompts/guidelines/index.js";
|
|
30
|
+
import type * as prompts_guidelines_review from "../prompts/guidelines/review.js";
|
|
28
31
|
import type * as prompts_index from "../prompts/index.js";
|
|
29
32
|
import type * as prompts_init_base from "../prompts/init/base.js";
|
|
30
33
|
import type * as prompts_init_index from "../prompts/init/index.js";
|
|
31
34
|
import type * as prompts_init_roles from "../prompts/init/roles.js";
|
|
32
35
|
import type * as prompts_init_taskStarted from "../prompts/init/taskStarted.js";
|
|
33
36
|
import type * as prompts_init_waitForTask from "../prompts/init/waitForTask.js";
|
|
37
|
+
import type * as prompts_policies_design from "../prompts/policies/design.js";
|
|
38
|
+
import type * as prompts_policies_index from "../prompts/policies/index.js";
|
|
39
|
+
import type * as prompts_policies_performance from "../prompts/policies/performance.js";
|
|
40
|
+
import type * as prompts_policies_security from "../prompts/policies/security.js";
|
|
34
41
|
import type * as prompts_templates from "../prompts/templates.js";
|
|
35
42
|
import type * as serviceDesk from "../serviceDesk.js";
|
|
36
43
|
import type * as system_auth_google from "../system/auth/google.js";
|
|
@@ -53,6 +60,7 @@ declare const fullApi: ApiFromModules<{
|
|
|
53
60
|
cliAuth: typeof cliAuth;
|
|
54
61
|
crypto: typeof crypto;
|
|
55
62
|
discussions: typeof discussions;
|
|
63
|
+
guidelines: typeof guidelines;
|
|
56
64
|
"lib/cliSessionAuth": typeof lib_cliSessionAuth;
|
|
57
65
|
"lib/hierarchy": typeof lib_hierarchy;
|
|
58
66
|
messages: typeof messages;
|
|
@@ -60,12 +68,18 @@ declare const fullApi: ApiFromModules<{
|
|
|
60
68
|
participants: typeof participants;
|
|
61
69
|
presentations: typeof presentations;
|
|
62
70
|
"prompts/generator": typeof prompts_generator;
|
|
71
|
+
"prompts/guidelines/index": typeof prompts_guidelines_index;
|
|
72
|
+
"prompts/guidelines/review": typeof prompts_guidelines_review;
|
|
63
73
|
"prompts/index": typeof prompts_index;
|
|
64
74
|
"prompts/init/base": typeof prompts_init_base;
|
|
65
75
|
"prompts/init/index": typeof prompts_init_index;
|
|
66
76
|
"prompts/init/roles": typeof prompts_init_roles;
|
|
67
77
|
"prompts/init/taskStarted": typeof prompts_init_taskStarted;
|
|
68
78
|
"prompts/init/waitForTask": typeof prompts_init_waitForTask;
|
|
79
|
+
"prompts/policies/design": typeof prompts_policies_design;
|
|
80
|
+
"prompts/policies/index": typeof prompts_policies_index;
|
|
81
|
+
"prompts/policies/performance": typeof prompts_policies_performance;
|
|
82
|
+
"prompts/policies/security": typeof prompts_policies_security;
|
|
69
83
|
"prompts/templates": typeof prompts_templates;
|
|
70
84
|
serviceDesk: typeof serviceDesk;
|
|
71
85
|
"system/auth/google": typeof system_auth_google;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Authentication Storage
|
|
3
3
|
* Manages CLI session storage in ~/.chatroom/auth.jsonc
|
|
4
|
+
*
|
|
5
|
+
* Sessions are stored per Convex URL to support multiple environments.
|
|
4
6
|
*/
|
|
5
7
|
interface AuthData {
|
|
6
8
|
sessionId: string;
|
|
@@ -13,15 +15,15 @@ interface AuthData {
|
|
|
13
15
|
*/
|
|
14
16
|
export declare function getAuthFilePath(): string;
|
|
15
17
|
/**
|
|
16
|
-
* Load the stored authentication data
|
|
18
|
+
* Load the stored authentication data for the current environment
|
|
17
19
|
*/
|
|
18
20
|
export declare function loadAuthData(): AuthData | null;
|
|
19
21
|
/**
|
|
20
|
-
* Save authentication data
|
|
22
|
+
* Save authentication data for the current environment
|
|
21
23
|
*/
|
|
22
24
|
export declare function saveAuthData(data: AuthData): void;
|
|
23
25
|
/**
|
|
24
|
-
* Clear authentication data (logout)
|
|
26
|
+
* Clear authentication data for the current environment (logout)
|
|
25
27
|
*/
|
|
26
28
|
export declare function clearAuthData(): boolean;
|
|
27
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/auth/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/auth/storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,UAAU,QAAQ;IAEhB,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA+BD;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AA2CD;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAgB9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAiDjD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA6CvC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Authentication Storage
|
|
3
3
|
* Manages CLI session storage in ~/.chatroom/auth.jsonc
|
|
4
|
+
*
|
|
5
|
+
* Sessions are stored per Convex URL to support multiple environments.
|
|
4
6
|
*/
|
|
5
7
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
6
8
|
import { homedir, hostname } from 'node:os';
|
|
7
9
|
import { join } from 'node:path';
|
|
10
|
+
import { getConvexUrl } from '../convex/client.js';
|
|
8
11
|
const CHATROOM_DIR = join(homedir(), '.chatroom');
|
|
9
12
|
const AUTH_FILE = 'auth.jsonc';
|
|
10
13
|
/**
|
|
@@ -22,51 +25,145 @@ export function getAuthFilePath() {
|
|
|
22
25
|
return join(CHATROOM_DIR, AUTH_FILE);
|
|
23
26
|
}
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
28
|
+
* Parse JSONC content (JSON with comments)
|
|
26
29
|
*/
|
|
27
|
-
|
|
30
|
+
function parseJsonc(content) {
|
|
31
|
+
const jsonContent = content
|
|
32
|
+
.split('\n')
|
|
33
|
+
.filter((line) => !line.trim().startsWith('//'))
|
|
34
|
+
.join('\n');
|
|
35
|
+
return JSON.parse(jsonContent);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Load the raw auth file data
|
|
39
|
+
*/
|
|
40
|
+
function loadRawAuthData() {
|
|
28
41
|
const authPath = getAuthFilePath();
|
|
29
42
|
if (!existsSync(authPath)) {
|
|
30
43
|
return null;
|
|
31
44
|
}
|
|
32
45
|
try {
|
|
33
46
|
const content = readFileSync(authPath, 'utf-8');
|
|
34
|
-
|
|
35
|
-
const jsonContent = content
|
|
36
|
-
.split('\n')
|
|
37
|
-
.filter((line) => !line.trim().startsWith('//'))
|
|
38
|
-
.join('\n');
|
|
39
|
-
return JSON.parse(jsonContent);
|
|
47
|
+
return parseJsonc(content);
|
|
40
48
|
}
|
|
41
49
|
catch {
|
|
42
50
|
return null;
|
|
43
51
|
}
|
|
44
52
|
}
|
|
45
53
|
/**
|
|
46
|
-
*
|
|
54
|
+
* Check if data is in new multi-environment format
|
|
55
|
+
*/
|
|
56
|
+
function isMultiEnvFormat(data) {
|
|
57
|
+
return (typeof data === 'object' &&
|
|
58
|
+
data !== null &&
|
|
59
|
+
'version' in data &&
|
|
60
|
+
data.version === 2);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load the stored authentication data for the current environment
|
|
64
|
+
*/
|
|
65
|
+
export function loadAuthData() {
|
|
66
|
+
const rawData = loadRawAuthData();
|
|
67
|
+
if (!rawData) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// Handle new multi-environment format
|
|
71
|
+
if (isMultiEnvFormat(rawData)) {
|
|
72
|
+
const convexUrl = getConvexUrl();
|
|
73
|
+
return rawData.sessions[convexUrl] ?? null;
|
|
74
|
+
}
|
|
75
|
+
// Handle legacy format - migrate to new format on next save
|
|
76
|
+
// For now, return the legacy data for the production URL only
|
|
77
|
+
const legacyData = rawData;
|
|
78
|
+
return legacyData.sessionId ? legacyData : null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Save authentication data for the current environment
|
|
47
82
|
*/
|
|
48
83
|
export function saveAuthData(data) {
|
|
49
84
|
ensureConfigDir();
|
|
50
85
|
const authPath = getAuthFilePath();
|
|
86
|
+
const convexUrl = getConvexUrl();
|
|
87
|
+
// Load existing data or create new structure
|
|
88
|
+
let multiEnvData;
|
|
89
|
+
const rawData = loadRawAuthData();
|
|
90
|
+
if (isMultiEnvFormat(rawData)) {
|
|
91
|
+
// Use existing multi-env data
|
|
92
|
+
multiEnvData = rawData;
|
|
93
|
+
}
|
|
94
|
+
else if (rawData && rawData.sessionId) {
|
|
95
|
+
// Migrate legacy data - associate it with production URL
|
|
96
|
+
const legacyData = rawData;
|
|
97
|
+
const productionUrl = 'https://chatroom-cloud.duskfare.com';
|
|
98
|
+
multiEnvData = {
|
|
99
|
+
version: 2,
|
|
100
|
+
sessions: {
|
|
101
|
+
[productionUrl]: {
|
|
102
|
+
sessionId: legacyData.sessionId,
|
|
103
|
+
createdAt: legacyData.createdAt,
|
|
104
|
+
deviceName: legacyData.deviceName,
|
|
105
|
+
cliVersion: legacyData.cliVersion,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Create new structure
|
|
112
|
+
multiEnvData = {
|
|
113
|
+
version: 2,
|
|
114
|
+
sessions: {},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Update session for current environment
|
|
118
|
+
multiEnvData.sessions[convexUrl] = data;
|
|
119
|
+
// Write to file with pretty formatting
|
|
51
120
|
const content = `// Chatroom CLI Authentication
|
|
52
121
|
// This file is auto-generated. Do not edit manually.
|
|
122
|
+
// Sessions are stored per Convex environment.
|
|
53
123
|
// To re-authenticate, run: chatroom auth login
|
|
54
124
|
// To logout, run: chatroom auth logout
|
|
55
|
-
{
|
|
56
|
-
"sessionId": "${data.sessionId}",
|
|
57
|
-
"createdAt": "${data.createdAt}"${data.deviceName ? `,\n "deviceName": "${data.deviceName}"` : ''}${data.cliVersion ? `,\n "cliVersion": "${data.cliVersion}"` : ''}
|
|
58
|
-
}
|
|
125
|
+
${JSON.stringify(multiEnvData, null, 2)}
|
|
59
126
|
`;
|
|
60
127
|
writeFileSync(authPath, content, 'utf-8');
|
|
61
128
|
}
|
|
62
129
|
/**
|
|
63
|
-
* Clear authentication data (logout)
|
|
130
|
+
* Clear authentication data for the current environment (logout)
|
|
64
131
|
*/
|
|
65
132
|
export function clearAuthData() {
|
|
66
133
|
const authPath = getAuthFilePath();
|
|
67
|
-
|
|
134
|
+
const convexUrl = getConvexUrl();
|
|
135
|
+
const rawData = loadRawAuthData();
|
|
136
|
+
if (!rawData) {
|
|
68
137
|
return false;
|
|
69
138
|
}
|
|
139
|
+
// Handle multi-env format
|
|
140
|
+
if (isMultiEnvFormat(rawData)) {
|
|
141
|
+
if (!rawData.sessions[convexUrl]) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
delete rawData.sessions[convexUrl];
|
|
145
|
+
// If no sessions left, delete the file
|
|
146
|
+
if (Object.keys(rawData.sessions).length === 0) {
|
|
147
|
+
try {
|
|
148
|
+
unlinkSync(authPath);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Otherwise, save updated data
|
|
156
|
+
const content = `// Chatroom CLI Authentication
|
|
157
|
+
// This file is auto-generated. Do not edit manually.
|
|
158
|
+
// Sessions are stored per Convex environment.
|
|
159
|
+
// To re-authenticate, run: chatroom auth login
|
|
160
|
+
// To logout, run: chatroom auth logout
|
|
161
|
+
${JSON.stringify(rawData, null, 2)}
|
|
162
|
+
`;
|
|
163
|
+
writeFileSync(authPath, content, 'utf-8');
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
// Handle legacy format - just delete the file
|
|
70
167
|
try {
|
|
71
168
|
unlinkSync(authPath);
|
|
72
169
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/infrastructure/auth/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/infrastructure/auth/storage.ts"],"names":[],"mappings":"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"}
|