larkcc 0.1.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 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function initSession(profile?: string): void;
2
+ export declare function getSession(persist?: boolean): string | undefined;
3
+ export declare function setSession(sessionId: string): void;
4
+ export declare function clearSession(): void;
5
+ export declare function getChatId(): string | null;
6
+ export declare function saveChatId(chatId: string): void;
@@ -0,0 +1,59 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import os from "os";
4
+ const STATE_DIR = path.join(os.homedir(), ".larkcc");
5
+ function statePath(profile) {
6
+ if (!profile || profile === "default") {
7
+ return path.join(STATE_DIR, "state.json");
8
+ }
9
+ return path.join(STATE_DIR, `state-${profile}.json`);
10
+ }
11
+ function loadState(profile) {
12
+ try {
13
+ const p = statePath(profile);
14
+ if (!fs.existsSync(p))
15
+ return {};
16
+ return JSON.parse(fs.readFileSync(p, "utf8"));
17
+ }
18
+ catch {
19
+ return {};
20
+ }
21
+ }
22
+ function saveState(state, profile) {
23
+ if (!fs.existsSync(STATE_DIR))
24
+ fs.mkdirSync(STATE_DIR, { recursive: true });
25
+ fs.writeFileSync(statePath(profile), JSON.stringify(state, null, 2), "utf8");
26
+ }
27
+ // 内存缓存
28
+ let memorySessionId;
29
+ let currentProfile;
30
+ export function initSession(profile) {
31
+ currentProfile = profile;
32
+ memorySessionId = undefined;
33
+ }
34
+ export function getSession(persist = false) {
35
+ if (persist)
36
+ return loadState(currentProfile).session_id;
37
+ return memorySessionId;
38
+ }
39
+ export function setSession(sessionId) {
40
+ memorySessionId = sessionId;
41
+ const state = loadState(currentProfile);
42
+ state.session_id = sessionId;
43
+ saveState(state, currentProfile);
44
+ }
45
+ export function clearSession() {
46
+ memorySessionId = undefined;
47
+ const state = loadState(currentProfile);
48
+ delete state.session_id;
49
+ saveState(state, currentProfile);
50
+ }
51
+ export function getChatId() {
52
+ return loadState(currentProfile).chat_id ?? null;
53
+ }
54
+ export function saveChatId(chatId) {
55
+ const state = loadState(currentProfile);
56
+ state.chat_id = chatId;
57
+ saveState(state, currentProfile);
58
+ }
59
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAErD,SAAS,SAAS,CAAC,OAAgB;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,OAAO,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,OAAgB;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAA6B,EAAE,OAAgB;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,OAAO;AACP,IAAI,eAAmC,CAAC;AACxC,IAAI,cAAkC,CAAC;AAEvC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,cAAc,GAAG,OAAO,CAAC;IACzB,eAAe,GAAG,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAO,GAAG,KAAK;IACxC,IAAI,OAAO;QAAE,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC;IACzD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,eAAe,GAAG,SAAS,CAAC;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,eAAe,GAAG,SAAS,CAAC;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runSetup(profile?: string): Promise<void>;
2
+ export declare function runNewProfile(): Promise<string>;
package/dist/setup.js ADDED
@@ -0,0 +1,45 @@
1
+ import readline from "readline";
2
+ import { saveProfile, GLOBAL_CONFIG_PATH } from "./config.js";
3
+ import { logger } from "./logger.js";
4
+ function prompt(rl, question) {
5
+ return new Promise((resolve) => {
6
+ rl.question(question, (answer) => resolve(answer.trim()));
7
+ });
8
+ }
9
+ function generateName() {
10
+ return `bot-${Math.random().toString(36).slice(2, 6)}`;
11
+ }
12
+ export async function runSetup(profile) {
13
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
14
+ const isDefault = !profile || profile === "default";
15
+ const label = isDefault ? "default profile" : `profile "${profile}"`;
16
+ console.log(`\n🛠 larkcc setup — configuring ${label}\n`);
17
+ const app_id = await prompt(rl, " Feishu App ID : ");
18
+ const app_secret = await prompt(rl, " Feishu App Secret : ");
19
+ let profileName = profile;
20
+ if (!isDefault && !profileName) {
21
+ const input = await prompt(rl, ` Profile name (blank to auto-generate): `);
22
+ profileName = input || generateName();
23
+ console.log(` → Using name: ${profileName}`);
24
+ }
25
+ rl.close();
26
+ // owner_open_id 留空,首次收到消息时自动填入
27
+ saveProfile(profileName, { app_id, app_secret, owner_open_id: "" });
28
+ logger.success(`Config saved to ${GLOBAL_CONFIG_PATH}`);
29
+ logger.dim("Send any message to the bot to auto-detect your open_id\n");
30
+ }
31
+ export async function runNewProfile() {
32
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
33
+ console.log("\n🛠 larkcc — add new profile\n");
34
+ const app_id = await prompt(rl, " Feishu App ID : ");
35
+ const app_secret = await prompt(rl, " Feishu App Secret : ");
36
+ const nameInput = await prompt(rl, " Profile name (blank to auto-generate): ");
37
+ const profileName = nameInput || generateName();
38
+ rl.close();
39
+ console.log(` → Using name: ${profileName}`);
40
+ saveProfile(profileName, { app_id, app_secret, owner_open_id: "" });
41
+ logger.success(`Profile "${profileName}" saved`);
42
+ logger.dim("Send any message to the bot to auto-detect your open_id\n");
43
+ return profileName;
44
+ }
45
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "larkcc",
3
+ "version": "0.1.0",
4
+ "description": "Claude Code in Feishu/Lark - AI coding assistant bot",
5
+ "author": "sujie <13156660820@163.com>",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "packageManager": "pnpm@10.32.1",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/suj1e/larkcc.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/suj1e/larkcc/issues"
15
+ },
16
+ "homepage": "https://github.com/suj1e/larkcc#readme",
17
+ "keywords": [
18
+ "ai",
19
+ "coding-assistant",
20
+ "claude",
21
+ "feishu",
22
+ "lark",
23
+ "bot",
24
+ "chatbot",
25
+ "claude-code"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "README.md",
33
+ "LICENSE",
34
+ "CHANGELOG.md"
35
+ ],
36
+ "bin": {
37
+ "larkcc": "./dist/index.js"
38
+ },
39
+ "scripts": {
40
+ "dev": "tsx watch src/index.ts",
41
+ "build": "tsc",
42
+ "start": "node dist/index.js"
43
+ },
44
+ "dependencies": {
45
+ "@anthropic-ai/claude-agent-sdk": "latest",
46
+ "@larksuiteoapi/node-sdk": "^1",
47
+ "commander": "^12",
48
+ "js-yaml": "^4",
49
+ "ora": "^8",
50
+ "chalk": "^5"
51
+ },
52
+ "devDependencies": {
53
+ "tsx": "^4",
54
+ "typescript": "^5",
55
+ "@types/node": "^22",
56
+ "@types/js-yaml": "^4"
57
+ }
58
+ }