@chiwanpark/pi-squared-agent 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/README.md +13 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +144 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/auth-store.d.ts +36 -0
- package/dist/runtime/auth-store.d.ts.map +1 -0
- package/dist/runtime/auth-store.js +131 -0
- package/dist/runtime/auth-store.js.map +1 -0
- package/dist/runtime/config-store.d.ts +44 -0
- package/dist/runtime/config-store.d.ts.map +1 -0
- package/dist/runtime/config-store.js +138 -0
- package/dist/runtime/config-store.js.map +1 -0
- package/dist/runtime/messages.d.ts +12 -0
- package/dist/runtime/messages.d.ts.map +1 -0
- package/dist/runtime/messages.js +101 -0
- package/dist/runtime/messages.js.map +1 -0
- package/dist/runtime/model-resolver.d.ts +52 -0
- package/dist/runtime/model-resolver.d.ts.map +1 -0
- package/dist/runtime/model-resolver.js +175 -0
- package/dist/runtime/model-resolver.js.map +1 -0
- package/dist/runtime/pi-agent.d.ts +83 -0
- package/dist/runtime/pi-agent.d.ts.map +1 -0
- package/dist/runtime/pi-agent.js +405 -0
- package/dist/runtime/pi-agent.js.map +1 -0
- package/dist/runtime/status-store.d.ts +50 -0
- package/dist/runtime/status-store.d.ts.map +1 -0
- package/dist/runtime/status-store.js +65 -0
- package/dist/runtime/status-store.js.map +1 -0
- package/dist/runtime/system-prompt.d.ts +11 -0
- package/dist/runtime/system-prompt.d.ts.map +1 -0
- package/dist/runtime/system-prompt.js +43 -0
- package/dist/runtime/system-prompt.js.map +1 -0
- package/dist/runtime/tools/bash.d.ts +23 -0
- package/dist/runtime/tools/bash.d.ts.map +1 -0
- package/dist/runtime/tools/bash.js +206 -0
- package/dist/runtime/tools/bash.js.map +1 -0
- package/dist/runtime/tools/child-process.d.ts +13 -0
- package/dist/runtime/tools/child-process.d.ts.map +1 -0
- package/dist/runtime/tools/child-process.js +75 -0
- package/dist/runtime/tools/child-process.js.map +1 -0
- package/dist/runtime/tools/output-accumulator.d.ts +52 -0
- package/dist/runtime/tools/output-accumulator.d.ts.map +1 -0
- package/dist/runtime/tools/output-accumulator.js +160 -0
- package/dist/runtime/tools/output-accumulator.js.map +1 -0
- package/dist/runtime/tools/shell.d.ts +26 -0
- package/dist/runtime/tools/shell.d.ts.map +1 -0
- package/dist/runtime/tools/shell.js +116 -0
- package/dist/runtime/tools/shell.js.map +1 -0
- package/dist/runtime/tools/truncate.d.ts +38 -0
- package/dist/runtime/tools/truncate.d.ts.map +1 -0
- package/dist/runtime/tools/truncate.js +98 -0
- package/dist/runtime/tools/truncate.js.map +1 -0
- package/dist/tools/bash/child-process.d.ts +13 -0
- package/dist/tools/bash/child-process.d.ts.map +1 -0
- package/dist/tools/bash/child-process.js +79 -0
- package/dist/tools/bash/child-process.js.map +1 -0
- package/dist/tools/bash/output-accumulator.d.ts +54 -0
- package/dist/tools/bash/output-accumulator.d.ts.map +1 -0
- package/dist/tools/bash/output-accumulator.js +171 -0
- package/dist/tools/bash/output-accumulator.js.map +1 -0
- package/dist/tools/bash/shell.d.ts +26 -0
- package/dist/tools/bash/shell.d.ts.map +1 -0
- package/dist/tools/bash/shell.js +129 -0
- package/dist/tools/bash/shell.js.map +1 -0
- package/dist/tools/bash/tool.d.ts +23 -0
- package/dist/tools/bash/tool.d.ts.map +1 -0
- package/dist/tools/bash/tool.js +219 -0
- package/dist/tools/bash/tool.js.map +1 -0
- package/dist/tools/bash/truncate.d.ts +50 -0
- package/dist/tools/bash/truncate.d.ts.map +1 -0
- package/dist/tools/bash/truncate.js +184 -0
- package/dist/tools/bash/truncate.js.map +1 -0
- package/dist/tools/external-tool.d.ts +2 -0
- package/dist/tools/external-tool.d.ts.map +1 -0
- package/dist/tools/external-tool.js +15 -0
- package/dist/tools/external-tool.js.map +1 -0
- package/dist/tools/file/edit-diff.d.ts +27 -0
- package/dist/tools/file/edit-diff.d.ts.map +1 -0
- package/dist/tools/file/edit-diff.js +196 -0
- package/dist/tools/file/edit-diff.js.map +1 -0
- package/dist/tools/file/edit.d.ts +26 -0
- package/dist/tools/file/edit.d.ts.map +1 -0
- package/dist/tools/file/edit.js +106 -0
- package/dist/tools/file/edit.js.map +1 -0
- package/dist/tools/file/find.d.ts +27 -0
- package/dist/tools/file/find.d.ts.map +1 -0
- package/dist/tools/file/find.js +150 -0
- package/dist/tools/file/find.js.map +1 -0
- package/dist/tools/file/glob.d.ts +6 -0
- package/dist/tools/file/glob.d.ts.map +1 -0
- package/dist/tools/file/glob.js +50 -0
- package/dist/tools/file/glob.js.map +1 -0
- package/dist/tools/file/grep.d.ts +29 -0
- package/dist/tools/file/grep.d.ts.map +1 -0
- package/dist/tools/file/grep.js +220 -0
- package/dist/tools/file/grep.js.map +1 -0
- package/dist/tools/file/index.d.ts +7 -0
- package/dist/tools/file/index.d.ts.map +1 -0
- package/dist/tools/file/index.js +7 -0
- package/dist/tools/file/index.js.map +1 -0
- package/dist/tools/file/ls.d.ts +27 -0
- package/dist/tools/file/ls.d.ts.map +1 -0
- package/dist/tools/file/ls.js +82 -0
- package/dist/tools/file/ls.js.map +1 -0
- package/dist/tools/file/read.d.ts +23 -0
- package/dist/tools/file/read.d.ts.map +1 -0
- package/dist/tools/file/read.js +98 -0
- package/dist/tools/file/read.js.map +1 -0
- package/dist/tools/file/write.d.ts +17 -0
- package/dist/tools/file/write.d.ts.map +1 -0
- package/dist/tools/file/write.js +45 -0
- package/dist/tools/file/write.js.map +1 -0
- package/dist/tools/file-mutation-queue.d.ts +3 -0
- package/dist/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/tools/file-mutation-queue.js +47 -0
- package/dist/tools/file-mutation-queue.js.map +1 -0
- package/dist/tools/path-utils.d.ts +5 -0
- package/dist/tools/path-utils.d.ts.map +1 -0
- package/dist/tools/path-utils.js +79 -0
- package/dist/tools/path-utils.js.map +1 -0
- package/dist/tools/web/index.d.ts +2 -0
- package/dist/tools/web/index.d.ts.map +1 -0
- package/dist/tools/web/index.js +2 -0
- package/dist/tools/web/index.js.map +1 -0
- package/dist/tools/web/search.d.ts +44 -0
- package/dist/tools/web/search.d.ts.map +1 -0
- package/dist/tools/web/search.js +209 -0
- package/dist/tools/web/search.js.map +1 -0
- package/dist/tui/box.d.ts +11 -0
- package/dist/tui/box.d.ts.map +1 -0
- package/dist/tui/box.js +24 -0
- package/dist/tui/box.js.map +1 -0
- package/dist/tui/chat-screen.d.ts +29 -0
- package/dist/tui/chat-screen.d.ts.map +1 -0
- package/dist/tui/chat-screen.js +475 -0
- package/dist/tui/chat-screen.js.map +1 -0
- package/dist/tui/commands.d.ts +34 -0
- package/dist/tui/commands.d.ts.map +1 -0
- package/dist/tui/commands.js +691 -0
- package/dist/tui/commands.js.map +1 -0
- package/dist/tui/interactive.d.ts +9 -0
- package/dist/tui/interactive.d.ts.map +1 -0
- package/dist/tui/interactive.js +88 -0
- package/dist/tui/interactive.js.map +1 -0
- package/dist/tui/overlays.d.ts +39 -0
- package/dist/tui/overlays.d.ts.map +1 -0
- package/dist/tui/overlays.js +157 -0
- package/dist/tui/overlays.js.map +1 -0
- package/dist/tui/theme.d.ts +40 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +120 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/welcome.d.ts +3 -0
- package/dist/tui/welcome.d.ts.map +1 -0
- package/dist/tui/welcome.js +37 -0
- package/dist/tui/welcome.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { AuthStore } from "./runtime/auth-store.js";
|
|
3
|
+
import { ConfigStore } from "./runtime/config-store.js";
|
|
4
|
+
import { PiSquaredAgentRuntime } from "./runtime/pi-agent.js";
|
|
5
|
+
import { normalizeThinkingLevel, resolveModel } from "./runtime/model-resolver.js";
|
|
6
|
+
import { runInteractive } from "./tui/interactive.js";
|
|
7
|
+
const VERSION = "0.1.0";
|
|
8
|
+
const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
9
|
+
async function main() {
|
|
10
|
+
const options = parseArgs(process.argv.slice(2));
|
|
11
|
+
if (options.help) {
|
|
12
|
+
printHelp();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (options.version) {
|
|
16
|
+
console.log(VERSION);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const authStore = new AuthStore();
|
|
20
|
+
await authStore.load();
|
|
21
|
+
const configStore = new ConfigStore();
|
|
22
|
+
await configStore.load();
|
|
23
|
+
const config = configStore.getConfig();
|
|
24
|
+
const resolved = resolveConfiguredModel(authStore, config.model);
|
|
25
|
+
const requestedThinking = options.thinking ?? config.thinking ?? "off";
|
|
26
|
+
const thinkingLevel = normalizeThinkingLevel(resolved.model, requestedThinking);
|
|
27
|
+
// Use INIT_CWD (set by pnpm) to preserve the directory where the command was invoked,
|
|
28
|
+
// falling back to process.cwd() if INIT_CWD is not available (e.g., when running directly)
|
|
29
|
+
const cwd = process.env.INIT_CWD ?? process.cwd();
|
|
30
|
+
const runtimeOptions = {
|
|
31
|
+
model: resolved.model,
|
|
32
|
+
thinkingLevel,
|
|
33
|
+
systemPrompt: options.systemPrompt,
|
|
34
|
+
authStore,
|
|
35
|
+
cwd,
|
|
36
|
+
webSearch: config.search,
|
|
37
|
+
};
|
|
38
|
+
const runtime = new PiSquaredAgentRuntime(runtimeOptions);
|
|
39
|
+
const interactiveOptions = { runtime, configStore };
|
|
40
|
+
if (options.initialMessage)
|
|
41
|
+
interactiveOptions.initialMessage = options.initialMessage;
|
|
42
|
+
await runInteractive(interactiveOptions);
|
|
43
|
+
}
|
|
44
|
+
function resolveConfiguredModel(authStore, modelConfig) {
|
|
45
|
+
if (!modelConfig)
|
|
46
|
+
return resolveModel({ authStore });
|
|
47
|
+
try {
|
|
48
|
+
return resolveModel({ authStore, provider: modelConfig.provider, model: modelConfig.id });
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
52
|
+
console.warn(`Ignoring saved model configuration: ${message}`);
|
|
53
|
+
return resolveModel({ authStore });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function parseArgs(argv) {
|
|
57
|
+
const options = {
|
|
58
|
+
help: false,
|
|
59
|
+
version: false,
|
|
60
|
+
};
|
|
61
|
+
const messageParts = [];
|
|
62
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
63
|
+
const arg = argv[i];
|
|
64
|
+
if (!arg)
|
|
65
|
+
continue;
|
|
66
|
+
if (arg === "--") {
|
|
67
|
+
messageParts.push(...argv.slice(i + 1));
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
if (!arg.startsWith("-")) {
|
|
71
|
+
messageParts.push(arg);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const [flag, inlineValue] = splitFlag(arg);
|
|
75
|
+
switch (flag) {
|
|
76
|
+
case "-h":
|
|
77
|
+
case "--help":
|
|
78
|
+
options.help = true;
|
|
79
|
+
break;
|
|
80
|
+
case "-v":
|
|
81
|
+
case "--version":
|
|
82
|
+
options.version = true;
|
|
83
|
+
break;
|
|
84
|
+
case "--system-prompt":
|
|
85
|
+
options.systemPrompt = inlineValue ?? takeValue(argv, ++i, flag);
|
|
86
|
+
break;
|
|
87
|
+
case "--thinking":
|
|
88
|
+
options.thinking = parseThinkingLevel(inlineValue ?? takeValue(argv, ++i, flag));
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
throw new Error(`Unknown option '${flag}'. Run 'pi2 --help' for usage.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const initialMessage = messageParts.join(" ").trim();
|
|
95
|
+
if (initialMessage.length > 0)
|
|
96
|
+
options.initialMessage = initialMessage;
|
|
97
|
+
return options;
|
|
98
|
+
}
|
|
99
|
+
function splitFlag(arg) {
|
|
100
|
+
const equals = arg.indexOf("=");
|
|
101
|
+
if (equals === -1)
|
|
102
|
+
return [arg, undefined];
|
|
103
|
+
return [arg.slice(0, equals), arg.slice(equals + 1)];
|
|
104
|
+
}
|
|
105
|
+
function takeValue(argv, index, flag) {
|
|
106
|
+
const value = argv[index];
|
|
107
|
+
if (!value || value.startsWith("-")) {
|
|
108
|
+
throw new Error(`Missing value for ${flag}.`);
|
|
109
|
+
}
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
function parseThinkingLevel(value) {
|
|
113
|
+
if (THINKING_LEVELS.includes(value)) {
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
throw new Error(`Invalid thinking level '${value}'. Expected one of: ${THINKING_LEVELS.join(", ")}`);
|
|
117
|
+
}
|
|
118
|
+
function printHelp() {
|
|
119
|
+
console.log(`pi2 ${VERSION}
|
|
120
|
+
|
|
121
|
+
Usage:
|
|
122
|
+
pi2 [options] [initial message]
|
|
123
|
+
|
|
124
|
+
Options:
|
|
125
|
+
--thinking <level> off|minimal|low|medium|high|xhigh (default: saved config or off)
|
|
126
|
+
--system-prompt <text> Override the default system prompt.
|
|
127
|
+
-h, --help Show this help.
|
|
128
|
+
-v, --version Show version.
|
|
129
|
+
|
|
130
|
+
The provider and model are selected automatically from available credentials:
|
|
131
|
+
- OAuth credentials stored in ~/.pi-squared/auth.json (override: PI_SQUARED_AUTH_FILE)
|
|
132
|
+
- Environment API keys, e.g. ANTHROPIC_API_KEY or OPENAI_API_KEY
|
|
133
|
+
|
|
134
|
+
Saved preferences are stored in ~/.pi-squared/config.json (override: PI_SQUARED_CONFIG_FILE).
|
|
135
|
+
|
|
136
|
+
Inside the TUI, type / to open the command menu. Useful commands:
|
|
137
|
+
/model, /thinking, /continue, /login, /logout, /help, /quit
|
|
138
|
+
`);
|
|
139
|
+
}
|
|
140
|
+
main().catch((error) => {
|
|
141
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
142
|
+
process.exitCode = 1;
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { PiSquaredAgentRuntime, type PiSquaredAgentRuntimeOptions } from "./runtime/pi-agent.js";
|
|
2
|
+
export { createUserMessage, messageRole, messageToText, contentToText } from "./runtime/messages.js";
|
|
3
|
+
export { AgentStatusStore, createInitialStatus, modelToStatus, type AgentNotice, type AgentPhase, type AgentStatusListener, type AgentStatusSnapshot, type ModelStatus, type NoticeLevel, } from "./runtime/status-store.js";
|
|
4
|
+
export { findModelByReference, getDefaultModelForProvider, listKnownProviders, listModelsForProvider, listApiKeyProviders, listOAuthProviders, listProvidersForSelection, normalizeThinkingLevel, parseModelReference, resolveModel, type ModelListEntry, type ApiKeyProviderEntry, type OAuthProviderEntry, type ParsedModelReference, type ProviderListEntry, type ResolveModelOptions, type ResolvedModel, } from "./runtime/model-resolver.js";
|
|
5
|
+
export { AuthStore, defaultAuthFilePath, type AuthFileShape, type AuthStoreOptions } from "./runtime/auth-store.js";
|
|
6
|
+
export { ConfigStore, defaultConfigFilePath, type ConfigFileShape, type ConfigStoreOptions, type PersistedModelConfig, type PersistedSearchConfig, } from "./runtime/config-store.js";
|
|
7
|
+
export { runInteractive, type InteractiveOptions } from "./tui/interactive.js";
|
|
8
|
+
export { buildRegistry, createCommands, parseSlashCommand, type CommandContext, type CommandDefinition, type CommandRegistry, type ParsedCommand, } from "./tui/commands.js";
|
|
9
|
+
export { createReadTool, createEditTool, createFindTool, createGrepTool, createLsTool, createWriteTool, type ReadToolInput, type EditToolInput, type FindToolInput, type GrepToolInput, type LsToolInput, type WriteToolInput, } from "./tools/file/index.js";
|
|
10
|
+
export { createSearchWebTool, type SearchWebAuth, type SearchWebSource, type SearchWebToolConfig, type SearchWebToolDetails, type SearchWebToolInput, type SearchWebToolOptions, } from "./tools/web/index.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpH,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { PiSquaredAgentRuntime } from "./runtime/pi-agent.js";
|
|
2
|
+
export { createUserMessage, messageRole, messageToText, contentToText } from "./runtime/messages.js";
|
|
3
|
+
export { AgentStatusStore, createInitialStatus, modelToStatus, } from "./runtime/status-store.js";
|
|
4
|
+
export { findModelByReference, getDefaultModelForProvider, listKnownProviders, listModelsForProvider, listApiKeyProviders, listOAuthProviders, listProvidersForSelection, normalizeThinkingLevel, parseModelReference, resolveModel, } from "./runtime/model-resolver.js";
|
|
5
|
+
export { AuthStore, defaultAuthFilePath } from "./runtime/auth-store.js";
|
|
6
|
+
export { ConfigStore, defaultConfigFilePath, } from "./runtime/config-store.js";
|
|
7
|
+
export { runInteractive } from "./tui/interactive.js";
|
|
8
|
+
export { buildRegistry, createCommands, parseSlashCommand, } from "./tui/commands.js";
|
|
9
|
+
export { createReadTool, createEditTool, createFindTool, createGrepTool, createLsTool, createWriteTool, } from "./tools/file/index.js";
|
|
10
|
+
export { createSearchWebTool, } from "./tools/web/index.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAqC,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GAOd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,GAQb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAA6C,MAAM,yBAAyB,CAAC;AACpH,OAAO,EACL,WAAW,EACX,qBAAqB,GAKtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,GAKlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,GAOhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,GAOpB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { OAuthCredentials } from "@earendil-works/pi-ai";
|
|
2
|
+
export interface AuthFileShape {
|
|
3
|
+
oauth?: Record<string, OAuthCredentials>;
|
|
4
|
+
apiKeys?: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export interface AuthStoreOptions {
|
|
7
|
+
/** Override the on-disk location (used by tests). */
|
|
8
|
+
filePath?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Persisted credential store for pi-squared.
|
|
12
|
+
*
|
|
13
|
+
* Layout: ~/.pi-squared/auth.json (override via PI_SQUARED_AUTH_FILE).
|
|
14
|
+
* Only OAuth credentials are stored here; API keys still come from the
|
|
15
|
+
* environment via @earendil-works/pi-ai's getEnvApiKey.
|
|
16
|
+
*/
|
|
17
|
+
export declare class AuthStore {
|
|
18
|
+
private readonly filePath;
|
|
19
|
+
private cache;
|
|
20
|
+
private loaded;
|
|
21
|
+
constructor(options?: AuthStoreOptions);
|
|
22
|
+
getFilePath(): string;
|
|
23
|
+
load(): Promise<void>;
|
|
24
|
+
getAllOAuth(): Record<string, OAuthCredentials>;
|
|
25
|
+
getOAuth(providerId: string): OAuthCredentials | undefined;
|
|
26
|
+
setOAuth(providerId: string, credentials: OAuthCredentials): Promise<void>;
|
|
27
|
+
removeOAuth(providerId: string): Promise<boolean>;
|
|
28
|
+
listOAuthProviderIds(): string[];
|
|
29
|
+
getApiKey(providerId: string): string | undefined;
|
|
30
|
+
setApiKey(providerId: string, key: string): Promise<void>;
|
|
31
|
+
removeApiKey(providerId: string): Promise<boolean>;
|
|
32
|
+
listApiKeyProviderIds(): string[];
|
|
33
|
+
private persist;
|
|
34
|
+
}
|
|
35
|
+
export declare function defaultAuthFilePath(): string;
|
|
36
|
+
//# sourceMappingURL=auth-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../../src/runtime/auth-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE,gBAAqB;IAI1C,WAAW,IAAI,MAAM;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAI/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIpD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1E,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvD,oBAAoB,IAAI,MAAM,EAAE;IAIhC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,qBAAqB,IAAI,MAAM,EAAE;YAInB,OAAO;CAOtB;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
const AUTH_FILE_ENV = "PI_SQUARED_AUTH_FILE";
|
|
5
|
+
/**
|
|
6
|
+
* Persisted credential store for pi-squared.
|
|
7
|
+
*
|
|
8
|
+
* Layout: ~/.pi-squared/auth.json (override via PI_SQUARED_AUTH_FILE).
|
|
9
|
+
* Only OAuth credentials are stored here; API keys still come from the
|
|
10
|
+
* environment via @earendil-works/pi-ai's getEnvApiKey.
|
|
11
|
+
*/
|
|
12
|
+
export class AuthStore {
|
|
13
|
+
filePath;
|
|
14
|
+
cache = {};
|
|
15
|
+
loaded = false;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.filePath = options.filePath ?? defaultAuthFilePath();
|
|
18
|
+
}
|
|
19
|
+
getFilePath() {
|
|
20
|
+
return this.filePath;
|
|
21
|
+
}
|
|
22
|
+
async load() {
|
|
23
|
+
if (this.loaded)
|
|
24
|
+
return;
|
|
25
|
+
this.loaded = true;
|
|
26
|
+
try {
|
|
27
|
+
const raw = await readFile(this.filePath, "utf8");
|
|
28
|
+
const parsed = JSON.parse(raw);
|
|
29
|
+
this.cache = sanitize(parsed);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (isNotFound(error)) {
|
|
33
|
+
this.cache = {};
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Failed to read auth file '${this.filePath}': ${error instanceof Error ? error.message : String(error)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getAllOAuth() {
|
|
40
|
+
return { ...(this.cache.oauth ?? {}) };
|
|
41
|
+
}
|
|
42
|
+
getOAuth(providerId) {
|
|
43
|
+
return this.cache.oauth?.[providerId];
|
|
44
|
+
}
|
|
45
|
+
async setOAuth(providerId, credentials) {
|
|
46
|
+
await this.load();
|
|
47
|
+
const oauth = { ...(this.cache.oauth ?? {}) };
|
|
48
|
+
oauth[providerId] = credentials;
|
|
49
|
+
this.cache = { ...this.cache, oauth };
|
|
50
|
+
await this.persist();
|
|
51
|
+
}
|
|
52
|
+
async removeOAuth(providerId) {
|
|
53
|
+
await this.load();
|
|
54
|
+
const oauth = { ...(this.cache.oauth ?? {}) };
|
|
55
|
+
if (!(providerId in oauth))
|
|
56
|
+
return false;
|
|
57
|
+
delete oauth[providerId];
|
|
58
|
+
this.cache = { ...this.cache, oauth };
|
|
59
|
+
await this.persist();
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
listOAuthProviderIds() {
|
|
63
|
+
return Object.keys(this.cache.oauth ?? {});
|
|
64
|
+
}
|
|
65
|
+
getApiKey(providerId) {
|
|
66
|
+
return this.cache.apiKeys?.[providerId];
|
|
67
|
+
}
|
|
68
|
+
async setApiKey(providerId, key) {
|
|
69
|
+
await this.load();
|
|
70
|
+
const apiKeys = { ...(this.cache.apiKeys ?? {}) };
|
|
71
|
+
apiKeys[providerId] = key;
|
|
72
|
+
this.cache = { ...this.cache, apiKeys };
|
|
73
|
+
await this.persist();
|
|
74
|
+
}
|
|
75
|
+
async removeApiKey(providerId) {
|
|
76
|
+
await this.load();
|
|
77
|
+
const apiKeys = { ...(this.cache.apiKeys ?? {}) };
|
|
78
|
+
if (!(providerId in apiKeys))
|
|
79
|
+
return false;
|
|
80
|
+
delete apiKeys[providerId];
|
|
81
|
+
this.cache = { ...this.cache, apiKeys };
|
|
82
|
+
await this.persist();
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
listApiKeyProviderIds() {
|
|
86
|
+
return Object.keys(this.cache.apiKeys ?? {});
|
|
87
|
+
}
|
|
88
|
+
async persist() {
|
|
89
|
+
const data = JSON.stringify(this.cache, null, 2);
|
|
90
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
91
|
+
const tmp = `${this.filePath}.tmp`;
|
|
92
|
+
await writeFile(tmp, `${data}\n`, { mode: 0o600 });
|
|
93
|
+
await rename(tmp, this.filePath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function defaultAuthFilePath() {
|
|
97
|
+
const override = process.env[AUTH_FILE_ENV];
|
|
98
|
+
if (override && override.length > 0)
|
|
99
|
+
return override;
|
|
100
|
+
return join(homedir(), ".pi-squared", "auth.json");
|
|
101
|
+
}
|
|
102
|
+
function sanitize(value) {
|
|
103
|
+
if (!value || typeof value !== "object")
|
|
104
|
+
return {};
|
|
105
|
+
const shape = value;
|
|
106
|
+
const oauth = {};
|
|
107
|
+
if (shape.oauth && typeof shape.oauth === "object") {
|
|
108
|
+
for (const [key, entry] of Object.entries(shape.oauth)) {
|
|
109
|
+
if (isOAuthCredentials(entry))
|
|
110
|
+
oauth[key] = entry;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const apiKeys = {};
|
|
114
|
+
if (shape.apiKeys && typeof shape.apiKeys === "object") {
|
|
115
|
+
for (const [key, entry] of Object.entries(shape.apiKeys)) {
|
|
116
|
+
if (typeof entry === "string" && entry.length > 0)
|
|
117
|
+
apiKeys[key] = entry;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { oauth, apiKeys };
|
|
121
|
+
}
|
|
122
|
+
function isOAuthCredentials(value) {
|
|
123
|
+
if (!value || typeof value !== "object")
|
|
124
|
+
return false;
|
|
125
|
+
const record = value;
|
|
126
|
+
return typeof record.refresh === "string" && typeof record.access === "string" && typeof record.expires === "number";
|
|
127
|
+
}
|
|
128
|
+
function isNotFound(error) {
|
|
129
|
+
return (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT");
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=auth-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../src/runtime/auth-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
|
+
export interface PersistedModelConfig {
|
|
3
|
+
provider: string;
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PersistedSearchConfig {
|
|
7
|
+
model?: string;
|
|
8
|
+
maxSources?: number;
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfigFileShape {
|
|
12
|
+
model?: PersistedModelConfig;
|
|
13
|
+
thinking?: ThinkingLevel;
|
|
14
|
+
search?: PersistedSearchConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface ConfigStoreOptions {
|
|
17
|
+
/** Override the on-disk location (used by tests). */
|
|
18
|
+
filePath?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Persisted user configuration for non-secret preferences.
|
|
22
|
+
*
|
|
23
|
+
* Layout: ~/.pi-squared/config.json (override via PI_SQUARED_CONFIG_FILE).
|
|
24
|
+
*/
|
|
25
|
+
export declare class ConfigStore {
|
|
26
|
+
private readonly filePath;
|
|
27
|
+
private cache;
|
|
28
|
+
private loaded;
|
|
29
|
+
constructor(options?: ConfigStoreOptions);
|
|
30
|
+
getFilePath(): string;
|
|
31
|
+
load(): Promise<void>;
|
|
32
|
+
getConfig(): ConfigFileShape;
|
|
33
|
+
getModel(): PersistedModelConfig | undefined;
|
|
34
|
+
getThinkingLevel(): ThinkingLevel | undefined;
|
|
35
|
+
getSearchConfig(): PersistedSearchConfig | undefined;
|
|
36
|
+
setModel(provider: string, id: string): Promise<void>;
|
|
37
|
+
setThinkingLevel(thinking: ThinkingLevel): Promise<void>;
|
|
38
|
+
setModelAndThinking(provider: string, id: string, thinking: ThinkingLevel): Promise<void>;
|
|
39
|
+
setSearchConfig(search: PersistedSearchConfig): Promise<void>;
|
|
40
|
+
private update;
|
|
41
|
+
private persist;
|
|
42
|
+
}
|
|
43
|
+
export declare function defaultConfigFilePath(): string;
|
|
44
|
+
//# sourceMappingURL=config-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/runtime/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAQnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE,kBAAuB;IAI5C,WAAW,IAAI,MAAM;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,SAAS,IAAI,eAAe;IAI5B,QAAQ,IAAI,oBAAoB,GAAG,SAAS;IAI5C,gBAAgB,IAAI,aAAa,GAAG,SAAS;IAI7C,eAAe,IAAI,qBAAqB,GAAG,SAAS;IAI9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YAIrD,MAAM;YAMN,OAAO;CAOtB;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
const CONFIG_FILE_ENV = "PI_SQUARED_CONFIG_FILE";
|
|
5
|
+
const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
6
|
+
/**
|
|
7
|
+
* Persisted user configuration for non-secret preferences.
|
|
8
|
+
*
|
|
9
|
+
* Layout: ~/.pi-squared/config.json (override via PI_SQUARED_CONFIG_FILE).
|
|
10
|
+
*/
|
|
11
|
+
export class ConfigStore {
|
|
12
|
+
filePath;
|
|
13
|
+
cache = {};
|
|
14
|
+
loaded = false;
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.filePath = options.filePath ?? defaultConfigFilePath();
|
|
17
|
+
}
|
|
18
|
+
getFilePath() {
|
|
19
|
+
return this.filePath;
|
|
20
|
+
}
|
|
21
|
+
async load() {
|
|
22
|
+
if (this.loaded)
|
|
23
|
+
return;
|
|
24
|
+
this.loaded = true;
|
|
25
|
+
try {
|
|
26
|
+
const raw = await readFile(this.filePath, "utf8");
|
|
27
|
+
const parsed = JSON.parse(raw);
|
|
28
|
+
this.cache = sanitize(parsed);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (isNotFound(error)) {
|
|
32
|
+
this.cache = {};
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`Failed to read config file '${this.filePath}': ${error instanceof Error ? error.message : String(error)}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
getConfig() {
|
|
39
|
+
return cloneConfig(this.cache);
|
|
40
|
+
}
|
|
41
|
+
getModel() {
|
|
42
|
+
return this.cache.model ? { ...this.cache.model } : undefined;
|
|
43
|
+
}
|
|
44
|
+
getThinkingLevel() {
|
|
45
|
+
return this.cache.thinking;
|
|
46
|
+
}
|
|
47
|
+
getSearchConfig() {
|
|
48
|
+
return this.cache.search ? { ...this.cache.search } : undefined;
|
|
49
|
+
}
|
|
50
|
+
async setModel(provider, id) {
|
|
51
|
+
await this.update({ model: { provider, id } });
|
|
52
|
+
}
|
|
53
|
+
async setThinkingLevel(thinking) {
|
|
54
|
+
await this.update({ thinking });
|
|
55
|
+
}
|
|
56
|
+
async setModelAndThinking(provider, id, thinking) {
|
|
57
|
+
await this.update({ model: { provider, id }, thinking });
|
|
58
|
+
}
|
|
59
|
+
async setSearchConfig(search) {
|
|
60
|
+
await this.update({ search });
|
|
61
|
+
}
|
|
62
|
+
async update(patch) {
|
|
63
|
+
await this.load();
|
|
64
|
+
this.cache = sanitize({ ...this.cache, ...patch });
|
|
65
|
+
await this.persist();
|
|
66
|
+
}
|
|
67
|
+
async persist() {
|
|
68
|
+
const data = JSON.stringify(this.cache, null, 2);
|
|
69
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
70
|
+
const tmp = `${this.filePath}.tmp`;
|
|
71
|
+
await writeFile(tmp, `${data}\n`, { mode: 0o600 });
|
|
72
|
+
await rename(tmp, this.filePath);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function defaultConfigFilePath() {
|
|
76
|
+
const override = process.env[CONFIG_FILE_ENV];
|
|
77
|
+
if (override && override.length > 0)
|
|
78
|
+
return override;
|
|
79
|
+
return join(homedir(), ".pi-squared", "config.json");
|
|
80
|
+
}
|
|
81
|
+
function cloneConfig(config) {
|
|
82
|
+
return {
|
|
83
|
+
...(config.model ? { model: { ...config.model } } : {}),
|
|
84
|
+
...(config.thinking ? { thinking: config.thinking } : {}),
|
|
85
|
+
...(config.search ? { search: { ...config.search } } : {}),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function sanitize(value) {
|
|
89
|
+
if (!value || typeof value !== "object")
|
|
90
|
+
return {};
|
|
91
|
+
const record = value;
|
|
92
|
+
const config = {};
|
|
93
|
+
if (isModelConfig(record.model)) {
|
|
94
|
+
config.model = { provider: record.model.provider, id: record.model.id };
|
|
95
|
+
}
|
|
96
|
+
if (isThinkingLevel(record.thinking)) {
|
|
97
|
+
config.thinking = record.thinking;
|
|
98
|
+
}
|
|
99
|
+
const search = sanitizeSearchConfig(record.search);
|
|
100
|
+
if (search)
|
|
101
|
+
config.search = search;
|
|
102
|
+
return config;
|
|
103
|
+
}
|
|
104
|
+
function isModelConfig(value) {
|
|
105
|
+
if (!value || typeof value !== "object")
|
|
106
|
+
return false;
|
|
107
|
+
const record = value;
|
|
108
|
+
return (typeof record.provider === "string" &&
|
|
109
|
+
record.provider.length > 0 &&
|
|
110
|
+
typeof record.id === "string" &&
|
|
111
|
+
record.id.length > 0);
|
|
112
|
+
}
|
|
113
|
+
function isThinkingLevel(value) {
|
|
114
|
+
return typeof value === "string" && THINKING_LEVELS.includes(value);
|
|
115
|
+
}
|
|
116
|
+
function sanitizeSearchConfig(value) {
|
|
117
|
+
if (!value || typeof value !== "object")
|
|
118
|
+
return undefined;
|
|
119
|
+
const record = value;
|
|
120
|
+
const search = {};
|
|
121
|
+
if (typeof record.model === "string" && record.model.trim().length > 0) {
|
|
122
|
+
search.model = record.model.trim();
|
|
123
|
+
}
|
|
124
|
+
if (isPositiveNumber(record.maxSources)) {
|
|
125
|
+
search.maxSources = Math.floor(record.maxSources);
|
|
126
|
+
}
|
|
127
|
+
if (isPositiveNumber(record.timeoutMs)) {
|
|
128
|
+
search.timeoutMs = Math.floor(record.timeoutMs);
|
|
129
|
+
}
|
|
130
|
+
return Object.keys(search).length > 0 ? search : undefined;
|
|
131
|
+
}
|
|
132
|
+
function isPositiveNumber(value) {
|
|
133
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
134
|
+
}
|
|
135
|
+
function isNotFound(error) {
|
|
136
|
+
return (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT");
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=config-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/runtime/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
+
export interface MessageMarkdownBlock {
|
|
3
|
+
kind: "thinking" | "message";
|
|
4
|
+
text: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function createUserMessage(text: string): AgentMessage;
|
|
7
|
+
export declare function contentToText(content: unknown): string;
|
|
8
|
+
export declare function messageRole(message: AgentMessage): string;
|
|
9
|
+
export declare function messageToText(message: AgentMessage): string;
|
|
10
|
+
export declare function messageToMarkdownBlocks(message: AgentMessage): MessageMarkdownBlock[];
|
|
11
|
+
export declare function isAssistantError(message: AgentMessage): boolean;
|
|
12
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/runtime/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIlE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAwBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAM5D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAOtD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAEzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAoB3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,EAAE,CA8BrF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAO/D"}
|