@operator-labs/darwin 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.
- package/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/app.d.ts +5 -0
- package/dist/app.js +469 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +134 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +15 -0
- package/dist/lib/auth.js +71 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/autocomplete.d.ts +18 -0
- package/dist/lib/autocomplete.js +124 -0
- package/dist/lib/autocomplete.js.map +1 -0
- package/dist/lib/command-surface.d.ts +52 -0
- package/dist/lib/command-surface.js +198 -0
- package/dist/lib/command-surface.js.map +1 -0
- package/dist/lib/config.d.ts +25 -0
- package/dist/lib/config.js +99 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/darwin-local.d.ts +31 -0
- package/dist/lib/darwin-local.js +195 -0
- package/dist/lib/darwin-local.js.map +1 -0
- package/dist/lib/local-sessions.d.ts +66 -0
- package/dist/lib/local-sessions.js +357 -0
- package/dist/lib/local-sessions.js.map +1 -0
- package/dist/lib/operator-harness.d.ts +13 -0
- package/dist/lib/operator-harness.js +185 -0
- package/dist/lib/operator-harness.js.map +1 -0
- package/dist/lib/operator.d.ts +2 -0
- package/dist/lib/operator.js +13 -0
- package/dist/lib/operator.js.map +1 -0
- package/dist/lib/pi-tools.d.ts +19 -0
- package/dist/lib/pi-tools.js +73 -0
- package/dist/lib/pi-tools.js.map +1 -0
- package/dist/theme.d.ts +21 -0
- package/dist/theme.js +64 -0
- package/dist/theme.js.map +1 -0
- package/dist/ui/components/answer-box.d.ts +6 -0
- package/dist/ui/components/answer-box.js +17 -0
- package/dist/ui/components/answer-box.js.map +1 -0
- package/dist/ui/components/chat-log.d.ts +18 -0
- package/dist/ui/components/chat-log.js +72 -0
- package/dist/ui/components/chat-log.js.map +1 -0
- package/dist/ui/components/custom-editor.d.ts +6 -0
- package/dist/ui/components/custom-editor.js +17 -0
- package/dist/ui/components/custom-editor.js.map +1 -0
- package/dist/ui/components/footer.d.ts +6 -0
- package/dist/ui/components/footer.js +15 -0
- package/dist/ui/components/footer.js.map +1 -0
- package/dist/ui/components/intro.d.ts +11 -0
- package/dist/ui/components/intro.js +62 -0
- package/dist/ui/components/intro.js.map +1 -0
- package/dist/ui/components/note-box.d.ts +6 -0
- package/dist/ui/components/note-box.js +17 -0
- package/dist/ui/components/note-box.js.map +1 -0
- package/dist/ui/components/tool-event.d.ts +9 -0
- package/dist/ui/components/tool-event.js +58 -0
- package/dist/ui/components/tool-event.js.map +1 -0
- package/dist/ui/components/user-query.d.ts +6 -0
- package/dist/ui/components/user-query.js +16 -0
- package/dist/ui/components/user-query.js.map +1 -0
- package/dist/ui/components/working-indicator.d.ts +12 -0
- package/dist/ui/components/working-indicator.js +30 -0
- package/dist/ui/components/working-indicator.js.map +1 -0
- package/dist/utils/markdown-table.d.ts +8 -0
- package/dist/utils/markdown-table.js +123 -0
- package/dist/utils/markdown-table.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-surface.js","sourceRoot":"","sources":["../../src/lib/command-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const OPERATOR_DIR: string;
|
|
2
|
+
export declare const OPERATOR_CONFIG_FILE: string;
|
|
3
|
+
export declare const OPERATOR_LOGS_DIR: string;
|
|
4
|
+
export declare const DARWIN_HOME_DIR: string;
|
|
5
|
+
export declare const DARWIN_HOME_CONFIG_FILE: string;
|
|
6
|
+
export interface OperatorConfig {
|
|
7
|
+
operatorApiKey?: string;
|
|
8
|
+
operatorAppUrl?: string;
|
|
9
|
+
operatorApiUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DarwinHomeConfig {
|
|
12
|
+
projectInitPreference?: "ask" | "always";
|
|
13
|
+
}
|
|
14
|
+
export declare function initDirs(): void;
|
|
15
|
+
export declare function isDevMode(): boolean;
|
|
16
|
+
export declare function getBaseUrl(): string;
|
|
17
|
+
export declare function getConfig<K extends keyof OperatorConfig>(key: K): OperatorConfig[K] | undefined;
|
|
18
|
+
export declare function setConfig<K extends keyof OperatorConfig>(key: K, value: OperatorConfig[K]): void;
|
|
19
|
+
export declare function deleteConfig(key: keyof OperatorConfig): void;
|
|
20
|
+
export declare function getStoredBaseUrl(): string;
|
|
21
|
+
export declare function getStoredApiKey(): string | undefined;
|
|
22
|
+
export declare function getDarwinHomeConfig(): DarwinHomeConfig;
|
|
23
|
+
export declare function setDarwinHomeConfig(config: DarwinHomeConfig): void;
|
|
24
|
+
export declare function getDarwinProjectInitPreference(): "ask" | "always";
|
|
25
|
+
export declare function setDarwinProjectInitPreference(value: "ask" | "always"): void;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
export const OPERATOR_DIR = process.env["OPERATOR_DIR"] || path.join(os.homedir(), ".operator");
|
|
5
|
+
export const OPERATOR_CONFIG_FILE = path.join(OPERATOR_DIR, "config.json");
|
|
6
|
+
export const OPERATOR_LOGS_DIR = path.join(OPERATOR_DIR, "logs");
|
|
7
|
+
export const DARWIN_HOME_DIR = process.env["DARWIN_HOME_DIR"] || path.join(os.homedir(), ".darwin");
|
|
8
|
+
export const DARWIN_HOME_CONFIG_FILE = path.join(DARWIN_HOME_DIR, "config.json");
|
|
9
|
+
function normalizeBaseUrl(url) {
|
|
10
|
+
return url
|
|
11
|
+
.replace(/^https:\/\/www\.operator\.io\/?$/i, "https://operator.io")
|
|
12
|
+
.replace(/\/+$/, "");
|
|
13
|
+
}
|
|
14
|
+
export function initDirs() {
|
|
15
|
+
fs.mkdirSync(OPERATOR_DIR, { recursive: true });
|
|
16
|
+
fs.mkdirSync(OPERATOR_LOGS_DIR, { recursive: true });
|
|
17
|
+
fs.mkdirSync(DARWIN_HOME_DIR, { recursive: true });
|
|
18
|
+
if (!fs.existsSync(OPERATOR_CONFIG_FILE)) {
|
|
19
|
+
fs.writeFileSync(OPERATOR_CONFIG_FILE, "{}\n");
|
|
20
|
+
}
|
|
21
|
+
if (!fs.existsSync(DARWIN_HOME_CONFIG_FILE)) {
|
|
22
|
+
fs.writeFileSync(DARWIN_HOME_CONFIG_FILE, "{}\n");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function isDevMode() {
|
|
26
|
+
return (process.env["OPERATOR_DEV"] === "1" ||
|
|
27
|
+
fs.existsSync(path.join(OPERATOR_DIR, ".dev")));
|
|
28
|
+
}
|
|
29
|
+
export function getBaseUrl() {
|
|
30
|
+
if (isDevMode()) {
|
|
31
|
+
return normalizeBaseUrl(process.env["OPERATOR_APP_URL"] || "http://localhost:3000");
|
|
32
|
+
}
|
|
33
|
+
return normalizeBaseUrl(process.env["OPERATOR_APP_URL"] || "https://operator.io");
|
|
34
|
+
}
|
|
35
|
+
function readConfig() {
|
|
36
|
+
initDirs();
|
|
37
|
+
try {
|
|
38
|
+
const data = fs.readFileSync(OPERATOR_CONFIG_FILE, "utf8");
|
|
39
|
+
return JSON.parse(data);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function writeConfig(config) {
|
|
46
|
+
initDirs();
|
|
47
|
+
fs.writeFileSync(OPERATOR_CONFIG_FILE, JSON.stringify(config, null, 2) + "\n");
|
|
48
|
+
}
|
|
49
|
+
export function getConfig(key) {
|
|
50
|
+
return readConfig()[key];
|
|
51
|
+
}
|
|
52
|
+
export function setConfig(key, value) {
|
|
53
|
+
const config = readConfig();
|
|
54
|
+
config[key] = value;
|
|
55
|
+
writeConfig(config);
|
|
56
|
+
}
|
|
57
|
+
export function deleteConfig(key) {
|
|
58
|
+
const config = readConfig();
|
|
59
|
+
delete config[key];
|
|
60
|
+
writeConfig(config);
|
|
61
|
+
}
|
|
62
|
+
export function getStoredBaseUrl() {
|
|
63
|
+
const configured = getConfig("operatorAppUrl") ||
|
|
64
|
+
getConfig("operatorApiUrl") ||
|
|
65
|
+
getBaseUrl();
|
|
66
|
+
return normalizeBaseUrl(configured);
|
|
67
|
+
}
|
|
68
|
+
export function getStoredApiKey() {
|
|
69
|
+
return getConfig("operatorApiKey");
|
|
70
|
+
}
|
|
71
|
+
function readDarwinHomeConfig() {
|
|
72
|
+
initDirs();
|
|
73
|
+
try {
|
|
74
|
+
const data = fs.readFileSync(DARWIN_HOME_CONFIG_FILE, "utf8");
|
|
75
|
+
return JSON.parse(data);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function writeDarwinHomeConfig(config) {
|
|
82
|
+
initDirs();
|
|
83
|
+
fs.writeFileSync(DARWIN_HOME_CONFIG_FILE, JSON.stringify(config, null, 2) + "\n");
|
|
84
|
+
}
|
|
85
|
+
export function getDarwinHomeConfig() {
|
|
86
|
+
return readDarwinHomeConfig();
|
|
87
|
+
}
|
|
88
|
+
export function setDarwinHomeConfig(config) {
|
|
89
|
+
writeDarwinHomeConfig(config);
|
|
90
|
+
}
|
|
91
|
+
export function getDarwinProjectInitPreference() {
|
|
92
|
+
return readDarwinHomeConfig().projectInitPreference ?? "ask";
|
|
93
|
+
}
|
|
94
|
+
export function setDarwinProjectInitPreference(value) {
|
|
95
|
+
const config = readDarwinHomeConfig();
|
|
96
|
+
config.projectInitPreference = value;
|
|
97
|
+
writeDarwinHomeConfig(config);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GACvB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAYjF,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,mCAAmC,EAAE,qBAAqB,CAAC;SACnE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG;QACnC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,uBAAuB,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,qBAAqB,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,UAAU;IACjB,QAAQ,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB;IACzC,QAAQ,EAAE,CAAC;IACX,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAM;IAEN,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAM,EACN,KAAwB;IAExB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAyB;IACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,UAAU,GACd,SAAS,CAAC,gBAAgB,CAAC;QAC3B,SAAS,CAAC,gBAAgB,CAAC;QAC3B,UAAU,EAAE,CAAC;IACf,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB;IAC3B,QAAQ,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAwB;IACrD,QAAQ,EAAE,CAAC;IACX,EAAE,CAAC,aAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAuB;IACpE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface DarwinToolCall {
|
|
2
|
+
type: "tool";
|
|
3
|
+
tool: "list_dir" | "read_file" | "write_file" | "edit_file";
|
|
4
|
+
args: Record<string, unknown>;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DarwinFinal {
|
|
8
|
+
type: "final";
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
export type DarwinAgentResponse = DarwinToolCall | DarwinFinal;
|
|
12
|
+
export interface DarwinToolResult {
|
|
13
|
+
tool: DarwinToolCall["tool"];
|
|
14
|
+
args: Record<string, unknown>;
|
|
15
|
+
summary: string;
|
|
16
|
+
payload: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export declare function isLikelyLocalWorkspaceRequest(input: string): boolean;
|
|
19
|
+
export declare function getWorkspaceSnapshot(root: string): Promise<string>;
|
|
20
|
+
export declare function buildDarwinInitialPrompt(params: {
|
|
21
|
+
workspaceRoot: string;
|
|
22
|
+
workspaceSnapshot: string;
|
|
23
|
+
request: string;
|
|
24
|
+
}): string;
|
|
25
|
+
export declare function buildDarwinContinuationPrompt(params: {
|
|
26
|
+
request: string;
|
|
27
|
+
result: DarwinToolResult;
|
|
28
|
+
parseError?: string;
|
|
29
|
+
}): string;
|
|
30
|
+
export declare function parseDarwinAgentResponse(text: string): DarwinAgentResponse;
|
|
31
|
+
export declare function executeDarwinTool(workspaceRoot: string, call: DarwinToolCall): Promise<DarwinToolResult>;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const LOCAL_REQUEST_PATTERNS = [
|
|
4
|
+
/\bhere\b/i,
|
|
5
|
+
/\bthis repo\b/i,
|
|
6
|
+
/\bthis repository\b/i,
|
|
7
|
+
/\bthis directory\b/i,
|
|
8
|
+
/\bthis project\b/i,
|
|
9
|
+
/\blocally\b/i,
|
|
10
|
+
/\bcreate (?:a )?new file\b/i,
|
|
11
|
+
/\bcreate file\b/i,
|
|
12
|
+
/\bwrite (?:a )?file\b/i,
|
|
13
|
+
/\bedit (?:the )?file\b/i,
|
|
14
|
+
/\bmodify (?:the )?file\b/i,
|
|
15
|
+
/\bupdate (?:the )?file\b/i,
|
|
16
|
+
/\bchange (?:the )?file\b/i,
|
|
17
|
+
/\bread (?:the )?file\b/i,
|
|
18
|
+
/\bpatch\b/i,
|
|
19
|
+
/\brefactor\b/i,
|
|
20
|
+
/\bpackage\.json\b/i,
|
|
21
|
+
/\btsconfig\.json\b/i,
|
|
22
|
+
/\bREADME\.md\b/i,
|
|
23
|
+
/(?:^|\s)(?:src|app|lib|test|tests)\/[^\s]+/i,
|
|
24
|
+
];
|
|
25
|
+
function resolveWorkspacePath(root, filePath) {
|
|
26
|
+
const resolved = path.resolve(root, filePath);
|
|
27
|
+
const normalizedRoot = path.resolve(root);
|
|
28
|
+
if (resolved !== normalizedRoot && !resolved.startsWith(`${normalizedRoot}${path.sep}`)) {
|
|
29
|
+
throw new Error(`Path escapes workspace root: ${filePath}`);
|
|
30
|
+
}
|
|
31
|
+
return resolved;
|
|
32
|
+
}
|
|
33
|
+
function asString(value, field) {
|
|
34
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
35
|
+
throw new Error(`Expected non-empty string for ${field}.`);
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
export function isLikelyLocalWorkspaceRequest(input) {
|
|
40
|
+
return LOCAL_REQUEST_PATTERNS.some((pattern) => pattern.test(input));
|
|
41
|
+
}
|
|
42
|
+
export async function getWorkspaceSnapshot(root) {
|
|
43
|
+
try {
|
|
44
|
+
const entries = await fs.readdir(root, { withFileTypes: true });
|
|
45
|
+
const visibleEntries = entries
|
|
46
|
+
.filter((entry) => !entry.name.startsWith("."))
|
|
47
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
48
|
+
.slice(0, 16)
|
|
49
|
+
.map((entry) => (entry.isDirectory() ? `${entry.name}/` : entry.name));
|
|
50
|
+
return visibleEntries.length > 0 ? visibleEntries.join(", ") : "(empty)";
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return "(unavailable)";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function buildDarwinInitialPrompt(params) {
|
|
57
|
+
return [
|
|
58
|
+
"You are Darwin, a local coding agent attached to a local workspace.",
|
|
59
|
+
`Workspace root: ${params.workspaceRoot}`,
|
|
60
|
+
`Top-level entries: ${params.workspaceSnapshot}`,
|
|
61
|
+
"",
|
|
62
|
+
"Available local tools:",
|
|
63
|
+
'- `list_dir` with args `{\"path\":\".\"}` to inspect a directory.',
|
|
64
|
+
'- `read_file` with args `{\"path\":\"src/file.ts\"}` to read a file.',
|
|
65
|
+
'- `write_file` with args `{\"path\":\"src/file.ts\",\"content\":\"...\"}` to create or overwrite a file.',
|
|
66
|
+
'- `edit_file` with args `{\"path\":\"src/file.ts\",\"old_text\":\"...\",\"new_text\":\"...\"}` for surgical edits.',
|
|
67
|
+
"",
|
|
68
|
+
"Rules:",
|
|
69
|
+
"- Treat here/this repo/this directory as the local workspace above.",
|
|
70
|
+
"- Do not ask about Operator instances unless the user explicitly asks about hosted resources.",
|
|
71
|
+
"- If you need local file information, call a tool instead of guessing.",
|
|
72
|
+
"- If the user omitted required details, ask a concise follow-up question.",
|
|
73
|
+
"- Reply with JSON only, no markdown fences.",
|
|
74
|
+
"",
|
|
75
|
+
"Valid response shapes:",
|
|
76
|
+
'{"type":"tool","tool":"read_file","args":{"path":"src/index.ts"},"message":"optional short reason"}',
|
|
77
|
+
'{"type":"final","message":"your concise answer"}',
|
|
78
|
+
"",
|
|
79
|
+
`User request: ${params.request}`,
|
|
80
|
+
].join("\n");
|
|
81
|
+
}
|
|
82
|
+
export function buildDarwinContinuationPrompt(params) {
|
|
83
|
+
const lines = [
|
|
84
|
+
`Original request: ${params.request}`,
|
|
85
|
+
`Tool executed: ${params.result.tool}`,
|
|
86
|
+
`Tool args: ${JSON.stringify(params.result.args)}`,
|
|
87
|
+
`Tool result: ${JSON.stringify(params.result.payload)}`,
|
|
88
|
+
"Decide the next step.",
|
|
89
|
+
'Reply with JSON only using either {"type":"tool",...} or {"type":"final","message":"..."}',
|
|
90
|
+
];
|
|
91
|
+
if (params.parseError) {
|
|
92
|
+
lines.unshift(`Previous response could not be parsed: ${params.parseError}`);
|
|
93
|
+
}
|
|
94
|
+
return lines.join("\n");
|
|
95
|
+
}
|
|
96
|
+
export function parseDarwinAgentResponse(text) {
|
|
97
|
+
const trimmed = text.trim();
|
|
98
|
+
const fencedMatch = trimmed.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);
|
|
99
|
+
const candidate = fencedMatch ? fencedMatch[1].trim() : trimmed;
|
|
100
|
+
const start = candidate.indexOf("{");
|
|
101
|
+
const end = candidate.lastIndexOf("}");
|
|
102
|
+
if (start === -1 || end === -1 || end <= start) {
|
|
103
|
+
throw new Error("No JSON object found.");
|
|
104
|
+
}
|
|
105
|
+
const parsed = JSON.parse(candidate.slice(start, end + 1));
|
|
106
|
+
if (parsed["type"] === "final") {
|
|
107
|
+
return {
|
|
108
|
+
type: "final",
|
|
109
|
+
message: asString(parsed["message"], "message"),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (parsed["type"] === "tool") {
|
|
113
|
+
const tool = asString(parsed["tool"], "tool");
|
|
114
|
+
if (!["list_dir", "read_file", "write_file", "edit_file"].includes(tool)) {
|
|
115
|
+
throw new Error(`Unsupported tool: ${tool}`);
|
|
116
|
+
}
|
|
117
|
+
const args = parsed["args"];
|
|
118
|
+
if (typeof args !== "object" || args === null || Array.isArray(args)) {
|
|
119
|
+
throw new Error("Tool args must be an object.");
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
type: "tool",
|
|
123
|
+
tool: tool,
|
|
124
|
+
args: args,
|
|
125
|
+
message: typeof parsed["message"] === "string" ? parsed["message"] : undefined,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
throw new Error("Response type must be `tool` or `final`.");
|
|
129
|
+
}
|
|
130
|
+
export async function executeDarwinTool(workspaceRoot, call) {
|
|
131
|
+
switch (call.tool) {
|
|
132
|
+
case "list_dir": {
|
|
133
|
+
const target = typeof call.args["path"] === "string" ? call.args["path"] : ".";
|
|
134
|
+
const resolved = resolveWorkspacePath(workspaceRoot, target);
|
|
135
|
+
const entries = await fs.readdir(resolved, { withFileTypes: true });
|
|
136
|
+
const items = entries
|
|
137
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
138
|
+
.map((entry) => (entry.isDirectory() ? `${entry.name}/` : entry.name));
|
|
139
|
+
return {
|
|
140
|
+
tool: call.tool,
|
|
141
|
+
args: call.args,
|
|
142
|
+
summary: items.length > 0 ? `${items.length} item(s)` : "empty directory",
|
|
143
|
+
payload: { path: target, items },
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
case "read_file": {
|
|
147
|
+
const target = asString(call.args["path"], "path");
|
|
148
|
+
const resolved = resolveWorkspacePath(workspaceRoot, target);
|
|
149
|
+
const content = await fs.readFile(resolved, "utf8");
|
|
150
|
+
const truncated = content.length > 24_000 ? `${content.slice(0, 24_000)}\n\n[truncated]` : content;
|
|
151
|
+
return {
|
|
152
|
+
tool: call.tool,
|
|
153
|
+
args: call.args,
|
|
154
|
+
summary: target,
|
|
155
|
+
payload: { path: target, content: truncated },
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
case "write_file": {
|
|
159
|
+
const target = asString(call.args["path"], "path");
|
|
160
|
+
const content = asString(call.args["content"], "content");
|
|
161
|
+
const resolved = resolveWorkspacePath(workspaceRoot, target);
|
|
162
|
+
await fs.mkdir(path.dirname(resolved), { recursive: true });
|
|
163
|
+
await fs.writeFile(resolved, content, "utf8");
|
|
164
|
+
return {
|
|
165
|
+
tool: call.tool,
|
|
166
|
+
args: call.args,
|
|
167
|
+
summary: target,
|
|
168
|
+
payload: { path: target, bytesWritten: Buffer.byteLength(content, "utf8") },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
case "edit_file": {
|
|
172
|
+
const target = asString(call.args["path"], "path");
|
|
173
|
+
const oldText = asString(call.args["old_text"], "old_text");
|
|
174
|
+
const newText = typeof call.args["new_text"] === "string" ? call.args["new_text"] : "";
|
|
175
|
+
const resolved = resolveWorkspacePath(workspaceRoot, target);
|
|
176
|
+
const content = await fs.readFile(resolved, "utf8");
|
|
177
|
+
const occurrences = content.split(oldText).length - 1;
|
|
178
|
+
if (occurrences === 0) {
|
|
179
|
+
throw new Error(`Could not find old_text in ${target}.`);
|
|
180
|
+
}
|
|
181
|
+
if (occurrences > 1) {
|
|
182
|
+
throw new Error(`old_text is ambiguous in ${target}; provide a more specific snippet.`);
|
|
183
|
+
}
|
|
184
|
+
const updated = content.replace(oldText, newText);
|
|
185
|
+
await fs.writeFile(resolved, updated, "utf8");
|
|
186
|
+
return {
|
|
187
|
+
tool: call.tool,
|
|
188
|
+
args: call.args,
|
|
189
|
+
summary: target,
|
|
190
|
+
payload: { path: target, replaced: 1 },
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=darwin-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"darwin-local.js","sourceRoot":"","sources":["../../src/lib/darwin-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { DarwinLocalToolCall, DarwinLocalToolResult } from "./pi-tools.js";
|
|
2
|
+
export interface DarwinSessionMessage {
|
|
3
|
+
role: "user" | "assistant";
|
|
4
|
+
text: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DarwinSessionUserMessage {
|
|
8
|
+
type: "user_message";
|
|
9
|
+
text: string;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DarwinSessionAssistantMessage {
|
|
13
|
+
type: "assistant_message";
|
|
14
|
+
text: string;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DarwinSessionToolCall {
|
|
18
|
+
type: "local_tool_call";
|
|
19
|
+
tool: DarwinLocalToolCall["tool"];
|
|
20
|
+
args: Record<string, unknown>;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
export interface DarwinSessionToolResult {
|
|
24
|
+
type: "local_tool_result";
|
|
25
|
+
tool: DarwinLocalToolResult["tool"];
|
|
26
|
+
args: Record<string, unknown>;
|
|
27
|
+
summary: string;
|
|
28
|
+
output: string;
|
|
29
|
+
details: unknown;
|
|
30
|
+
isError: boolean;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
}
|
|
33
|
+
export type DarwinSessionHistoryItem = DarwinSessionUserMessage | DarwinSessionAssistantMessage | DarwinSessionToolCall | DarwinSessionToolResult;
|
|
34
|
+
export interface DarwinSession {
|
|
35
|
+
id: string;
|
|
36
|
+
operatorChatId: string;
|
|
37
|
+
workspaceRoot: string;
|
|
38
|
+
title: string;
|
|
39
|
+
createdAt: string;
|
|
40
|
+
updatedAt: string;
|
|
41
|
+
messages: DarwinSessionMessage[];
|
|
42
|
+
history: DarwinSessionHistoryItem[];
|
|
43
|
+
}
|
|
44
|
+
export interface DarwinSessionSummary {
|
|
45
|
+
id: string;
|
|
46
|
+
title: string;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
messageCount: number;
|
|
49
|
+
}
|
|
50
|
+
export interface DarwinWorkspaceInit {
|
|
51
|
+
createdWorkspace: boolean;
|
|
52
|
+
importedLegacySessions: number;
|
|
53
|
+
}
|
|
54
|
+
export interface DarwinProjectConfig {
|
|
55
|
+
createdAt: string;
|
|
56
|
+
}
|
|
57
|
+
export declare function ensureDarwinWorkspace(workspaceRoot: string): Promise<DarwinWorkspaceInit>;
|
|
58
|
+
export declare function hasDarwinWorkspace(workspaceRoot: string): Promise<boolean>;
|
|
59
|
+
export declare function createLocalSession(workspaceRoot: string): Promise<DarwinSession>;
|
|
60
|
+
export declare function saveLocalSession(workspaceRoot: string, session: DarwinSession): Promise<DarwinSession>;
|
|
61
|
+
export declare function appendLocalSessionMessage(workspaceRoot: string, session: DarwinSession, role: DarwinSessionMessage["role"], text: string): Promise<DarwinSession>;
|
|
62
|
+
export declare function appendLocalSessionToolCall(workspaceRoot: string, session: DarwinSession, call: DarwinLocalToolCall): Promise<DarwinSession>;
|
|
63
|
+
export declare function appendLocalSessionToolResult(workspaceRoot: string, session: DarwinSession, result: DarwinLocalToolResult): Promise<DarwinSession>;
|
|
64
|
+
export declare function listLocalSessions(workspaceRoot: string): Promise<DarwinSessionSummary[]>;
|
|
65
|
+
export declare function loadLocalSession(workspaceRoot: string, sessionIdOrPrefix: string): Promise<DarwinSession>;
|
|
66
|
+
export declare function loadMostRecentLocalSession(workspaceRoot: string): Promise<DarwinSession | null>;
|