@aexol/spectral 0.7.1 → 0.7.5
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/CHANGELOG.md +5 -0
- package/dist/agent/agents.js +1 -1
- package/dist/agent/index.js +199 -184
- package/dist/commands/serve.js +0 -3
- package/dist/designer/data/systems/renault/DESIGN.md +1 -1
- package/dist/designer/philosophies.js +668 -0
- package/dist/mcp/sampling-handler.js +1 -1
- package/dist/memory/commands/status.js +1 -1
- package/dist/memory/compaction.js +2 -2
- package/dist/memory/config.js +1 -1
- package/dist/memory/debug-log.js +1 -1
- package/dist/memory/hooks/compaction-hook.js +29 -0
- package/dist/memory/index.js +2 -0
- package/dist/memory/observer.js +2 -2
- package/dist/memory/project-observations-store.js +14 -0
- package/dist/memory/tokens.js +1 -1
- package/dist/memory/tools/read-project-observations.js +82 -0
- package/dist/memory/tools/recall-observation.js +2 -2
- package/dist/pi/agent-core/agent-loop.js +501 -0
- package/dist/pi/agent-core/agent.js +401 -0
- package/dist/pi/agent-core/harness/agent-harness.js +899 -0
- package/dist/pi/agent-core/harness/compaction/branch-summarization.js +173 -0
- package/dist/pi/agent-core/harness/compaction/compaction.js +532 -0
- package/dist/pi/agent-core/harness/compaction/utils.js +130 -0
- package/dist/pi/agent-core/harness/env/nodejs.js +485 -0
- package/dist/pi/agent-core/harness/messages.js +101 -0
- package/dist/pi/agent-core/harness/prompt-templates.js +229 -0
- package/dist/pi/agent-core/harness/session/jsonl-repo.js +100 -0
- package/dist/pi/agent-core/harness/session/jsonl-storage.js +230 -0
- package/dist/pi/agent-core/harness/session/memory-repo.js +41 -0
- package/dist/pi/agent-core/harness/session/memory-storage.js +113 -0
- package/dist/pi/agent-core/harness/session/repo-utils.js +38 -0
- package/dist/pi/agent-core/harness/session/session.js +196 -0
- package/dist/pi/agent-core/harness/session/uuid.js +49 -0
- package/dist/pi/agent-core/harness/skills.js +310 -0
- package/dist/pi/agent-core/harness/system-prompt.js +29 -0
- package/dist/pi/agent-core/harness/types.js +93 -0
- package/dist/pi/agent-core/harness/utils/shell-output.js +125 -0
- package/dist/pi/agent-core/harness/utils/truncate.js +289 -0
- package/dist/pi/agent-core/index.js +24 -0
- package/dist/pi/agent-core/node.js +2 -0
- package/dist/pi/agent-core/proxy.js +277 -0
- package/dist/pi/agent-core/types.js +1 -0
- package/dist/pi/ai/api-registry.js +43 -0
- package/dist/pi/ai/cli.js +120 -0
- package/dist/pi/ai/env-api-keys.js +169 -0
- package/dist/pi/ai/image-models.generated.js +441 -0
- package/dist/pi/ai/image-models.js +22 -0
- package/dist/pi/ai/images-api-registry.js +21 -0
- package/dist/pi/ai/images.js +13 -0
- package/dist/pi/ai/index.js +18 -0
- package/dist/pi/ai/models.generated.js +16220 -0
- package/dist/pi/ai/models.js +70 -0
- package/dist/pi/ai/oauth.js +1 -0
- package/dist/pi/ai/providers/anthropic.js +945 -0
- package/dist/pi/ai/providers/faux.js +367 -0
- package/dist/pi/ai/providers/github-copilot-headers.js +28 -0
- package/dist/pi/ai/providers/openai-completions.js +945 -0
- package/dist/pi/ai/providers/openai-prompt-cache.js +9 -0
- package/dist/pi/ai/providers/register-builtins.js +97 -0
- package/dist/pi/ai/providers/simple-options.js +40 -0
- package/dist/pi/ai/providers/transform-messages.js +183 -0
- package/dist/pi/ai/session-resources.js +21 -0
- package/dist/pi/ai/stream.js +26 -0
- package/dist/pi/ai/types.js +1 -0
- package/dist/pi/ai/utils/diagnostics.js +24 -0
- package/dist/pi/ai/utils/event-stream.js +80 -0
- package/dist/pi/ai/utils/hash.js +13 -0
- package/dist/pi/ai/utils/headers.js +7 -0
- package/dist/pi/ai/utils/json-parse.js +112 -0
- package/dist/pi/ai/utils/node-http-proxy.js +96 -0
- package/dist/pi/ai/utils/oauth/anthropic.js +334 -0
- package/dist/pi/ai/utils/oauth/device-code.js +54 -0
- package/dist/pi/ai/utils/oauth/github-copilot.js +270 -0
- package/dist/pi/ai/utils/oauth/index.js +121 -0
- package/dist/pi/ai/utils/oauth/oauth-page.js +104 -0
- package/dist/pi/ai/utils/oauth/openai-codex.js +384 -0
- package/dist/pi/ai/utils/oauth/pkce.js +30 -0
- package/dist/pi/ai/utils/oauth/types.js +1 -0
- package/dist/pi/ai/utils/overflow.js +150 -0
- package/dist/pi/ai/utils/sanitize-unicode.js +25 -0
- package/dist/pi/ai/utils/typebox-helpers.js +20 -0
- package/dist/pi/ai/utils/validation.js +280 -0
- package/dist/pi/coding-agent/bun/cli.js +7 -0
- package/dist/pi/coding-agent/bun/restore-sandbox-env.js +31 -0
- package/dist/pi/coding-agent/cli/args.js +340 -0
- package/dist/pi/coding-agent/cli/file-processor.js +82 -0
- package/dist/pi/coding-agent/cli/initial-message.js +21 -0
- package/dist/pi/coding-agent/cli.js +17 -0
- package/dist/pi/coding-agent/config.js +414 -0
- package/dist/pi/coding-agent/core/agent-session-runtime.js +299 -0
- package/dist/pi/coding-agent/core/agent-session-services.js +117 -0
- package/dist/pi/coding-agent/core/agent-session.js +2498 -0
- package/dist/pi/coding-agent/core/auth-guidance.js +20 -0
- package/dist/pi/coding-agent/core/auth-storage.js +441 -0
- package/dist/pi/coding-agent/core/bash-executor.js +110 -0
- package/dist/pi/coding-agent/core/compaction/branch-summarization.js +242 -0
- package/dist/pi/coding-agent/core/compaction/compaction.js +624 -0
- package/dist/pi/coding-agent/core/compaction/index.js +6 -0
- package/dist/pi/coding-agent/core/compaction/utils.js +152 -0
- package/dist/pi/coding-agent/core/defaults.js +1 -0
- package/dist/pi/coding-agent/core/diagnostics.js +1 -0
- package/dist/pi/coding-agent/core/event-bus.js +24 -0
- package/dist/pi/coding-agent/core/exec.js +74 -0
- package/dist/pi/coding-agent/core/export-html/ansi-to-html.js +248 -0
- package/dist/pi/coding-agent/core/export-html/index.js +225 -0
- package/dist/pi/coding-agent/core/export-html/tool-renderer.js +107 -0
- package/dist/pi/coding-agent/core/extensions/index.js +8 -0
- package/dist/pi/coding-agent/core/extensions/loader.js +485 -0
- package/dist/pi/coding-agent/core/extensions/runner.js +824 -0
- package/dist/pi/coding-agent/core/extensions/types.js +44 -0
- package/dist/pi/coding-agent/core/extensions/wrapper.js +21 -0
- package/dist/pi/coding-agent/core/footer-data-provider.js +309 -0
- package/dist/pi/coding-agent/core/http-dispatcher.js +47 -0
- package/dist/pi/coding-agent/core/index.js +11 -0
- package/dist/pi/coding-agent/core/keybindings.js +294 -0
- package/dist/pi/coding-agent/core/messages.js +122 -0
- package/dist/pi/coding-agent/core/model-registry.js +728 -0
- package/dist/pi/coding-agent/core/model-resolver.js +494 -0
- package/dist/pi/coding-agent/core/output-guard.js +58 -0
- package/dist/pi/coding-agent/core/package-manager.js +2020 -0
- package/dist/pi/coding-agent/core/prompt-templates.js +237 -0
- package/dist/pi/coding-agent/core/provider-display-names.js +32 -0
- package/dist/pi/coding-agent/core/resolve-config-value.js +125 -0
- package/dist/pi/coding-agent/core/resource-loader.js +733 -0
- package/dist/pi/coding-agent/core/sdk.js +282 -0
- package/dist/pi/coding-agent/core/session-cwd.js +37 -0
- package/dist/pi/coding-agent/core/session-manager.js +1146 -0
- package/dist/pi/coding-agent/core/settings-manager.js +794 -0
- package/dist/pi/coding-agent/core/skills.js +386 -0
- package/dist/pi/coding-agent/core/slash-commands.js +24 -0
- package/dist/pi/coding-agent/core/source-info.js +18 -0
- package/dist/pi/coding-agent/core/system-prompt.js +122 -0
- package/dist/pi/coding-agent/core/telemetry.js +8 -0
- package/dist/pi/coding-agent/core/timings.js +30 -0
- package/dist/pi/coding-agent/core/tools/bash.js +341 -0
- package/dist/pi/coding-agent/core/tools/edit-diff.js +344 -0
- package/dist/pi/coding-agent/core/tools/edit.js +324 -0
- package/dist/pi/coding-agent/core/tools/file-mutation-queue.js +36 -0
- package/dist/pi/coding-agent/core/tools/find.js +297 -0
- package/dist/pi/coding-agent/core/tools/grep.js +303 -0
- package/dist/pi/coding-agent/core/tools/index.js +111 -0
- package/dist/pi/coding-agent/core/tools/ls.js +168 -0
- package/dist/pi/coding-agent/core/tools/output-accumulator.js +183 -0
- package/dist/pi/coding-agent/core/tools/path-utils.js +61 -0
- package/dist/pi/coding-agent/core/tools/read.js +288 -0
- package/dist/pi/coding-agent/core/tools/render-utils.js +48 -0
- package/dist/pi/coding-agent/core/tools/tool-definition-wrapper.js +33 -0
- package/dist/pi/coding-agent/core/tools/truncate.js +214 -0
- package/dist/pi/coding-agent/core/tools/write.js +212 -0
- package/dist/pi/coding-agent/index.js +41 -0
- package/dist/pi/coding-agent/main.js +5 -0
- package/dist/pi/coding-agent/migrations.js +280 -0
- package/dist/pi/coding-agent/modes/index.js +7 -0
- package/dist/pi/coding-agent/modes/interactive/components/diff.js +132 -0
- package/dist/pi/coding-agent/modes/interactive/components/keybinding-hints.js +35 -0
- package/dist/pi/coding-agent/modes/interactive/components/visual-truncate.js +32 -0
- package/dist/pi/coding-agent/modes/interactive/interactive-mode.js +3 -0
- package/dist/pi/coding-agent/modes/interactive/theme/theme.js +1023 -0
- package/dist/pi/coding-agent/modes/print-mode.js +130 -0
- package/dist/pi/coding-agent/modes/rpc/jsonl.js +48 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-client.js +409 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-mode.js +600 -0
- package/dist/pi/coding-agent/modes/rpc/rpc-types.js +7 -0
- package/dist/pi/coding-agent/utils/ansi.js +51 -0
- package/dist/pi/coding-agent/utils/changelog.js +86 -0
- package/dist/pi/coding-agent/utils/child-process.js +87 -0
- package/dist/pi/coding-agent/utils/clipboard-image.js +244 -0
- package/dist/pi/coding-agent/utils/clipboard-native.js +13 -0
- package/dist/pi/coding-agent/utils/clipboard.js +116 -0
- package/dist/pi/coding-agent/utils/exif-orientation.js +157 -0
- package/dist/pi/coding-agent/utils/frontmatter.js +25 -0
- package/dist/pi/coding-agent/utils/fs-watch.js +24 -0
- package/dist/pi/coding-agent/utils/git.js +162 -0
- package/dist/pi/coding-agent/utils/html.js +39 -0
- package/dist/pi/coding-agent/utils/image-convert.js +38 -0
- package/dist/pi/coding-agent/utils/image-resize.js +136 -0
- package/dist/pi/coding-agent/utils/mime.js +68 -0
- package/dist/pi/coding-agent/utils/paths.js +91 -0
- package/dist/pi/coding-agent/utils/photon.js +120 -0
- package/dist/pi/coding-agent/utils/pi-user-agent.js +4 -0
- package/dist/pi/coding-agent/utils/shell.js +194 -0
- package/dist/pi/coding-agent/utils/sleep.js +16 -0
- package/dist/pi/coding-agent/utils/syntax-highlight.js +117 -0
- package/dist/pi/coding-agent/utils/tools-manager.js +327 -0
- package/dist/pi/coding-agent/utils/version-check.js +81 -0
- package/dist/pi/coding-agent/utils/windows-self-update.js +76 -0
- package/dist/pi/tui/autocomplete.js +631 -0
- package/dist/pi/tui/components/box.js +103 -0
- package/dist/pi/tui/components/cancellable-loader.js +34 -0
- package/dist/pi/tui/components/editor.js +1915 -0
- package/dist/pi/tui/components/image.js +88 -0
- package/dist/pi/tui/components/input.js +425 -0
- package/dist/pi/tui/components/loader.js +68 -0
- package/dist/pi/tui/components/markdown.js +633 -0
- package/dist/pi/tui/components/select-list.js +158 -0
- package/dist/pi/tui/components/settings-list.js +184 -0
- package/dist/pi/tui/components/spacer.js +22 -0
- package/dist/pi/tui/components/text.js +88 -0
- package/dist/pi/tui/components/truncated-text.js +50 -0
- package/dist/pi/tui/editor-component.js +1 -0
- package/dist/pi/tui/fuzzy.js +109 -0
- package/dist/pi/tui/index.js +31 -0
- package/dist/pi/tui/keybindings.js +173 -0
- package/dist/pi/tui/keys.js +1172 -0
- package/dist/pi/tui/kill-ring.js +43 -0
- package/dist/pi/tui/stdin-buffer.js +360 -0
- package/dist/pi/tui/terminal-image.js +335 -0
- package/dist/pi/tui/terminal.js +324 -0
- package/dist/pi/tui/tui.js +1076 -0
- package/dist/pi/tui/undo-stack.js +24 -0
- package/dist/pi/tui/utils.js +1016 -0
- package/dist/relay/dispatcher.js +30 -0
- package/dist/server/handlers/queue.js +52 -0
- package/dist/server/pi-bridge.js +9 -1
- package/dist/server/session-stream.js +76 -111
- package/dist/server/storage.js +154 -2
- package/dist/server/title-generator.js +14 -153
- package/package.json +24 -6
|
@@ -1,34 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* ("New conversation" / null / empty).
|
|
2
|
+
* Session title utilities.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* decoupled from tests, the call is injectable via the `llmCall`
|
|
12
|
-
* dependency. The default implementation spawns a one-off pi
|
|
13
|
-
* `AgentSession` with `noTools: "all"`, sends the prompt, and accumulates
|
|
14
|
-
* `text_delta` events until `agent_end`. This reuses every bit of pi's
|
|
15
|
-
* auth + model selection without introducing a new SDK code path.
|
|
16
|
-
* - All failures are swallowed: log a warning and leave the title alone.
|
|
17
|
-
* The caller's stream is never affected — title gen runs fire-and-forget.
|
|
18
|
-
*
|
|
19
|
-
* Sanitization rules (applied after the LLM responds):
|
|
20
|
-
* - Trim whitespace
|
|
21
|
-
* - Strip surrounding quotes (`"…"`, `'…'`, `“…”`)
|
|
22
|
-
* - Take only the first non-empty line
|
|
23
|
-
* - Drop trailing punctuation (`.`, `,`, `!`, `?`, `;`, `:`)
|
|
24
|
-
* - Truncate to 60 characters
|
|
25
|
-
*
|
|
26
|
-
* Edge cases:
|
|
27
|
-
* - Empty assistant message (e.g. only tool calls) → fall back to using the
|
|
28
|
-
* user message alone for the prompt; if that's also empty, skip.
|
|
29
|
-
* - LLM returns empty string after sanitization → return null, skip rename.
|
|
4
|
+
* Pure helpers for title sanitization and default-title detection.
|
|
5
|
+
* Title generation now happens via the backend GraphQL mutation
|
|
6
|
+
* `generateSessionTitle`, called from the landing frontend after the
|
|
7
|
+
* first assistant turn completes. The CLI no longer has its own LLM
|
|
8
|
+
* pipeline for titles — the landing→backend→CLI REST PATCH flow
|
|
9
|
+
* handles both the rename and the cross-tab meta publish.
|
|
30
10
|
*/
|
|
31
|
-
import { createAgentSession, SessionManager, } from "@mariozechner/pi-coding-agent";
|
|
32
11
|
const DEFAULT_TITLES = new Set(["New conversation", "", "Untitled"]);
|
|
33
12
|
export const SESSION_TITLE_DEFAULT = "New conversation";
|
|
34
13
|
/** True if `title` looks like the auto-generated default and is fair game. */
|
|
@@ -56,8 +35,8 @@ export function sanitizeTitle(raw) {
|
|
|
56
35
|
const quotePairs = [
|
|
57
36
|
['"', '"'],
|
|
58
37
|
["'", "'"],
|
|
59
|
-
["\u201C", "\u201D"], //
|
|
60
|
-
["\u2018", "\u2019"], //
|
|
38
|
+
["\u201C", "\u201D"], // " "
|
|
39
|
+
["\u2018", "\u2019"], // ' '
|
|
61
40
|
["`", "`"],
|
|
62
41
|
];
|
|
63
42
|
for (const [open, close] of quotePairs) {
|
|
@@ -68,129 +47,11 @@ export function sanitizeTitle(raw) {
|
|
|
68
47
|
}
|
|
69
48
|
// Drop trailing punctuation.
|
|
70
49
|
out = out.replace(/[.,!?;:]+$/u, "").trim();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return null;
|
|
76
|
-
return out;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Build the prompt sent to the LLM. Truncates the assistant message body so
|
|
80
|
-
* a long answer doesn't blow out the context window of a tiny title model.
|
|
81
|
-
*/
|
|
82
|
-
export function buildTitlePrompt(firstUserMessage, firstAssistantMessage) {
|
|
83
|
-
const userText = firstUserMessage.trim();
|
|
84
|
-
const assistantText = firstAssistantMessage.trim().slice(0, 500);
|
|
85
|
-
const lines = [
|
|
86
|
-
"Generate a short title (4-6 words, no quotes, no trailing punctuation) for this conversation.",
|
|
87
|
-
"Respond with ONLY the title — no preamble, no explanation, no quotes.",
|
|
88
|
-
"",
|
|
89
|
-
`User: ${userText}`,
|
|
90
|
-
];
|
|
91
|
-
if (assistantText)
|
|
92
|
-
lines.push("", `Assistant: ${assistantText}`);
|
|
93
|
-
lines.push("", "Title:");
|
|
94
|
-
return lines.join("\n");
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Generate a sanitized title for a conversation, or `null` if generation
|
|
98
|
-
* failed / produced nothing usable.
|
|
99
|
-
*/
|
|
100
|
-
export async function generateSessionTitle(firstUserMessage, firstAssistantMessage, opts) {
|
|
101
|
-
const trimmedUser = firstUserMessage.trim();
|
|
102
|
-
if (!trimmedUser) {
|
|
103
|
-
// Nothing to summarize — pi was driven by an empty user turn (shouldn't
|
|
104
|
-
// happen via the wire path, but be defensive).
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
const prompt = buildTitlePrompt(trimmedUser, firstAssistantMessage);
|
|
108
|
-
const llmCall = opts.llmCall ?? defaultLlmCall(opts);
|
|
109
|
-
try {
|
|
110
|
-
const raw = await llmCall(prompt);
|
|
111
|
-
return sanitizeTitle(raw);
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
115
|
-
console.warn(`[spectral] warn: title generation failed: ${msg}`);
|
|
50
|
+
if (!out || out.length > 80) {
|
|
51
|
+
if (out.length > 80) {
|
|
52
|
+
return out.slice(0, 80);
|
|
53
|
+
}
|
|
116
54
|
return null;
|
|
117
55
|
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Default LLM call: spawn a one-off pi `AgentSession` with no tools, send the
|
|
121
|
-
* prompt, and accumulate `text_delta`s until `agent_end`. Disposes the session
|
|
122
|
-
* on completion (or failure).
|
|
123
|
-
*
|
|
124
|
-
* This deliberately reuses pi's existing model/auth resolution so the user
|
|
125
|
-
* doesn't have to configure an extra API key just for title generation. The
|
|
126
|
-
* downside is a slightly heavier code path than calling an LLM SDK directly;
|
|
127
|
-
* the upside is zero new auth surface.
|
|
128
|
-
*/
|
|
129
|
-
function defaultLlmCall(opts) {
|
|
130
|
-
return async (prompt) => {
|
|
131
|
-
const { session } = await createAgentSession({
|
|
132
|
-
cwd: opts.cwd,
|
|
133
|
-
agentDir: opts.agentDir,
|
|
134
|
-
sessionManager: SessionManager.inMemory(opts.cwd),
|
|
135
|
-
noTools: "all",
|
|
136
|
-
});
|
|
137
|
-
let text = "";
|
|
138
|
-
let resolveDone;
|
|
139
|
-
let rejectDone;
|
|
140
|
-
const done = new Promise((resolve, reject) => {
|
|
141
|
-
resolveDone = resolve;
|
|
142
|
-
rejectDone = reject;
|
|
143
|
-
});
|
|
144
|
-
const unsubscribe = session.subscribe((ev) => {
|
|
145
|
-
if (ev.type === "message_update") {
|
|
146
|
-
const inner = ev.assistantMessageEvent;
|
|
147
|
-
if (inner.type === "text_delta")
|
|
148
|
-
text += inner.delta;
|
|
149
|
-
}
|
|
150
|
-
else if (ev.type === "agent_end") {
|
|
151
|
-
resolveDone();
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
try {
|
|
155
|
-
// `prompt` resolves when the turn ends; `agent_end` should already
|
|
156
|
-
// have fired by then but we double-await for safety.
|
|
157
|
-
await session.prompt(prompt);
|
|
158
|
-
// In the event prompt() resolves before agent_end (defensive), wait a
|
|
159
|
-
// microtask to let the listener flush.
|
|
160
|
-
await Promise.race([
|
|
161
|
-
done,
|
|
162
|
-
new Promise((r) => setTimeout(r, 0)).then(() => undefined),
|
|
163
|
-
]);
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
const e = err instanceof Error ? err : new Error(String(err));
|
|
167
|
-
try {
|
|
168
|
-
unsubscribe();
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
/* ignore */
|
|
172
|
-
}
|
|
173
|
-
try {
|
|
174
|
-
session.dispose();
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
/* ignore */
|
|
178
|
-
}
|
|
179
|
-
rejectDone(e);
|
|
180
|
-
throw e;
|
|
181
|
-
}
|
|
182
|
-
try {
|
|
183
|
-
unsubscribe();
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
/* ignore */
|
|
187
|
-
}
|
|
188
|
-
try {
|
|
189
|
-
session.dispose();
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
/* ignore */
|
|
193
|
-
}
|
|
194
|
-
return text;
|
|
195
|
-
};
|
|
56
|
+
return out;
|
|
196
57
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aexol/spectral",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "Always-on coding agent for Aexol — branded pi wrapper with relay-based browser access.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -50,24 +50,42 @@
|
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
+
"@anthropic-ai/sdk": "^0.75.0",
|
|
53
54
|
"@inquirer/prompts": "^7.2.0",
|
|
54
55
|
"@mariozechner/jiti": "2.6.5",
|
|
55
|
-
"@mariozechner/pi-coding-agent": "0.70.2",
|
|
56
|
-
"better-sqlite3": "^12.9.0",
|
|
57
|
-
"@mariozechner/pi-agent-core": "0.70.2",
|
|
58
|
-
"@mariozechner/pi-ai": "0.70.2",
|
|
59
|
-
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
60
56
|
"@modelcontextprotocol/ext-apps": "^1.2.2",
|
|
57
|
+
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
58
|
+
"@silvia-odwyer/photon-node": "^0.3.3",
|
|
59
|
+
"better-sqlite3": "^12.9.0",
|
|
60
|
+
"chalk": "^5.6.2",
|
|
61
|
+
"cross-spawn": "^7.0.6",
|
|
62
|
+
"diff": "^8.0.0",
|
|
63
|
+
"get-east-asian-width": "^1.3.0",
|
|
64
|
+
"glob": "^11.0.0",
|
|
65
|
+
"highlight.js": "^11.11.0",
|
|
66
|
+
"hosted-git-info": "^8.0.0",
|
|
67
|
+
"ignore": "^7.0.0",
|
|
68
|
+
"marked": "^15.0.0",
|
|
69
|
+
"minimatch": "^10.0.0",
|
|
61
70
|
"open": "^10.2.0",
|
|
71
|
+
"openai": "^5.23.0",
|
|
72
|
+
"partial-json": "^0.1.7",
|
|
62
73
|
"picocolors": "^1.1.1",
|
|
74
|
+
"proper-lockfile": "^4.1.2",
|
|
75
|
+
"proxy-agent": "^6.5.0",
|
|
63
76
|
"typebox": "^1.1.24",
|
|
77
|
+
"undici": "^7.0.0",
|
|
64
78
|
"ws": "^8.20.0",
|
|
79
|
+
"yaml": "^2.7.0",
|
|
65
80
|
"zod": "^3.25.0 || ^4.0.0"
|
|
66
81
|
},
|
|
67
82
|
"devDependencies": {
|
|
68
83
|
"@aexol/relay-protocol": "file:../packages/relay-protocol",
|
|
69
84
|
"@types/better-sqlite3": "^7.6.13",
|
|
85
|
+
"@types/cross-spawn": "^6.0.6",
|
|
86
|
+
"@types/hosted-git-info": "^3.0.5",
|
|
70
87
|
"@types/node": "^20.11.0",
|
|
88
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
71
89
|
"@types/ws": "^8.18.1",
|
|
72
90
|
"tsx": "^4.7.0",
|
|
73
91
|
"typescript": "^5.4.0",
|