@earendil-works/pi-coding-agent 0.82.1 → 0.84.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/CHANGELOG.md +243 -0
- package/README.md +6 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +27 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts +23 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +117 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +130 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +28 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/list-models.d.ts +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +2 -2
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +2 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -11
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +85 -76
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +15 -9
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +159 -38
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +43 -20
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +10 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +28 -3
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +10 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +5 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +36 -4
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/model-config.d.ts +29 -5
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +4 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +13 -10
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +4 -3
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +41 -10
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +30 -13
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +231 -73
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +12 -7
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +83 -14
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/package-manager.d.ts +4 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +76 -42
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts +8 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +25 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/provider-composer.d.ts +4 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +36 -15
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +73 -67
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +15 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +64 -10
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +5 -5
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +11 -8
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +3 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +12 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +40 -16
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/find.d.ts +3 -0
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +11 -18
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +11 -2
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +22 -8
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +57 -5
- package/dist/main.js.map +1 -1
- package/dist/modes/index.d.ts +1 -0
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +13 -4
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +7 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +20 -5
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +26 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +30 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +3 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +9 -2
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +33 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +443 -144
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -0
- package/dist/modes/interactive/theme/light.json +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +10 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +5 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +13 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +28 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +12 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +12 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +5 -4
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +17 -3
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +11 -9
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/rpc-entry.js +1 -0
- package/dist/rpc-entry.js.map +1 -1
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +48 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/clipboard.d.ts +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +22 -2
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/management-http.d.ts +23 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +50 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/paths.d.ts +3 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +23 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +4 -6
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +4 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +20 -2
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +2 -2
- package/docs/custom-provider.md +16 -8
- package/docs/extensions.md +30 -4
- package/docs/json.md +19 -14
- package/docs/keybindings.md +38 -10
- package/docs/models.md +24 -3
- package/docs/providers.md +2 -0
- package/docs/quickstart.md +2 -0
- package/docs/rpc.md +13 -11
- package/docs/sdk.md +21 -2
- package/docs/security.md +1 -1
- package/docs/session-format.md +2 -0
- package/docs/settings.md +4 -1
- package/docs/themes.md +5 -3
- package/docs/usage.md +7 -0
- package/examples/extensions/custom-compaction.ts +1 -16
- package/examples/extensions/custom-provider-anthropic/index.ts +10 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +2 -11
- package/examples/extensions/qna.ts +3 -7
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/summarize.ts +7 -18
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/rpc-extension-ui.ts +11 -2
- package/examples/sdk/02-custom-model.ts +1 -2
- package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
- package/examples/sdk/12-full-control.ts +3 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +70 -26
- package/package.json +14 -7
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { uuidv7 } from "@earendil-works/pi-ai";
|
|
17
|
-
import { complete } from "@earendil-works/pi-ai/compat";
|
|
18
17
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
19
18
|
import { convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
|
|
20
19
|
|
|
@@ -32,17 +31,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
32
31
|
return;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
// Resolve request auth for the summarization model
|
|
36
|
-
const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);
|
|
37
|
-
if (!auth.ok) {
|
|
38
|
-
ctx.ui.notify(`Compaction auth failed: ${auth.error}`, "warning");
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (!auth.apiKey) {
|
|
42
|
-
ctx.ui.notify(`No API key for ${model.provider}, using default compaction`, "warning");
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
34
|
// Combine all messages for full summary
|
|
47
35
|
const allMessages = [...messagesToSummarize, ...turnPrefixMessages];
|
|
48
36
|
|
|
@@ -88,13 +76,10 @@ ${conversationText}
|
|
|
88
76
|
|
|
89
77
|
try {
|
|
90
78
|
// Pass signal to honor abort requests (e.g., user cancels compaction)
|
|
91
|
-
const response = await complete(
|
|
79
|
+
const response = await ctx.modelRegistry.complete(
|
|
92
80
|
model,
|
|
93
81
|
{ messages: summaryMessages },
|
|
94
82
|
{
|
|
95
|
-
apiKey: auth.apiKey,
|
|
96
|
-
headers: auth.headers,
|
|
97
|
-
env: auth.env,
|
|
98
83
|
maxTokens: 8192,
|
|
99
84
|
signal,
|
|
100
85
|
cacheRetention: "none",
|
|
@@ -124,7 +124,7 @@ async function loginAnthropic(callbacks: OAuthLoginCallbacks): Promise<OAuthCred
|
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
async function refreshAnthropicToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {
|
|
127
|
+
async function refreshAnthropicToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials> {
|
|
128
128
|
const response = await fetch(TOKEN_URL, {
|
|
129
129
|
method: "POST",
|
|
130
130
|
headers: { "Content-Type": "application/json" },
|
|
@@ -133,6 +133,7 @@ async function refreshAnthropicToken(credentials: OAuthCredentials): Promise<OAu
|
|
|
133
133
|
client_id: CLIENT_ID,
|
|
134
134
|
refresh_token: credentials.refresh,
|
|
135
135
|
}),
|
|
136
|
+
signal,
|
|
136
137
|
});
|
|
137
138
|
|
|
138
139
|
if (!response.ok) {
|
|
@@ -353,7 +354,7 @@ function streamCustomAnthropic(
|
|
|
353
354
|
totalTokens: 0,
|
|
354
355
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
355
356
|
},
|
|
356
|
-
stopReason: "
|
|
357
|
+
stopReason: "pending",
|
|
357
358
|
timestamp: Date.now(),
|
|
358
359
|
};
|
|
359
360
|
|
|
@@ -546,8 +547,14 @@ function streamCustomAnthropic(
|
|
|
546
547
|
if (options?.signal?.aborted) {
|
|
547
548
|
throw new Error("Request was aborted");
|
|
548
549
|
}
|
|
550
|
+
if (output.stopReason === "pending") {
|
|
551
|
+
throw new Error("Anthropic stream ended without a stop reason");
|
|
552
|
+
}
|
|
553
|
+
if (output.stopReason === "error" || output.stopReason === "aborted") {
|
|
554
|
+
throw new Error(output.errorMessage || "An unknown error occurred");
|
|
555
|
+
}
|
|
549
556
|
|
|
550
|
-
stream.push({ type: "done", reason: output.stopReason
|
|
557
|
+
stream.push({ type: "done", reason: output.stopReason, message: output });
|
|
551
558
|
stream.end();
|
|
552
559
|
} catch (error) {
|
|
553
560
|
for (const block of output.content) delete (block as any).index;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-custom-provider",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-custom-provider",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.84.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.52.0"
|
|
12
12
|
}
|
|
@@ -274,7 +274,7 @@ async function loginGitLab(callbacks: OAuthLoginCallbacks): Promise<OAuthCredent
|
|
|
274
274
|
};
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
-
async function refreshGitLabToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {
|
|
277
|
+
async function refreshGitLabToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials> {
|
|
278
278
|
const response = await fetch(`${GITLAB_COM_URL}/oauth/token`, {
|
|
279
279
|
method: "POST",
|
|
280
280
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
@@ -283,6 +283,7 @@ async function refreshGitLabToken(credentials: OAuthCredentials): Promise<OAuthC
|
|
|
283
283
|
grant_type: "refresh_token",
|
|
284
284
|
refresh_token: credentials.refresh,
|
|
285
285
|
}).toString(),
|
|
286
|
+
signal,
|
|
286
287
|
});
|
|
287
288
|
if (!response.ok) throw new Error(`Token refresh failed: ${await response.text()}`);
|
|
288
289
|
const data = (await response.json()) as {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { existsSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { gunzipSync } from "node:zlib";
|
|
4
5
|
|
|
5
6
|
// Get the bundled WAD path (relative to this module)
|
|
6
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
8
|
const BUNDLED_WAD = join(__dirname, "doom1.wad");
|
|
8
|
-
const WAD_URL = "https://
|
|
9
|
+
const WAD_URL = "https://www.gamers.org/pub/idgames/idstuff/doom/doom-1.8.wad.gz";
|
|
9
10
|
|
|
10
11
|
const DEFAULT_WAD_PATHS = ["./doom1.wad", "./DOOM1.WAD", "~/doom1.wad", "~/.doom/doom1.wad"];
|
|
11
12
|
|
|
@@ -42,8 +43,11 @@ export async function ensureWadFile(): Promise<string | null> {
|
|
|
42
43
|
if (!response.ok) {
|
|
43
44
|
throw new Error(`HTTP ${response.status}`);
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
46
|
+
const wad = gunzipSync(Buffer.from(await response.arrayBuffer()));
|
|
47
|
+
if (wad.subarray(0, 4).toString("ascii") !== "IWAD") {
|
|
48
|
+
throw new Error("Downloaded file is not a valid IWAD");
|
|
49
|
+
}
|
|
50
|
+
writeFileSync(BUNDLED_WAD, wad);
|
|
47
51
|
return BUNDLED_WAD;
|
|
48
52
|
} catch {
|
|
49
53
|
return null;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-gondolin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-gondolin",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.84.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@earendil-works/gondolin": "0.12.0"
|
|
12
12
|
}
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
16
|
-
import { uuidv7 } from "@earendil-works/pi-ai";
|
|
17
|
-
import { complete, type Message } from "@earendil-works/pi-ai/compat";
|
|
16
|
+
import { type Message, uuidv7 } from "@earendil-works/pi-ai";
|
|
18
17
|
import type { ExtensionAPI, SessionEntry } from "@earendil-works/pi-coding-agent";
|
|
19
18
|
import { BorderedLoader, convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
|
|
20
19
|
|
|
@@ -118,11 +117,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
118
117
|
loader.onAbort = () => done(null);
|
|
119
118
|
|
|
120
119
|
const doGenerate = async () => {
|
|
121
|
-
const auth = await ctx.modelRegistry.getApiKeyAndHeaders(ctx.model!);
|
|
122
|
-
if (!auth.ok || !auth.apiKey) {
|
|
123
|
-
throw new Error(auth.ok ? `No API key for ${ctx.model!.provider}` : auth.error);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
120
|
const userMessage: Message = {
|
|
127
121
|
role: "user",
|
|
128
122
|
content: [
|
|
@@ -134,13 +128,10 @@ export default function (pi: ExtensionAPI) {
|
|
|
134
128
|
timestamp: Date.now(),
|
|
135
129
|
};
|
|
136
130
|
|
|
137
|
-
const response = await complete(
|
|
131
|
+
const response = await ctx.modelRegistry.complete(
|
|
138
132
|
ctx.model!,
|
|
139
133
|
{ systemPrompt: SYSTEM_PROMPT, messages: [userMessage] },
|
|
140
134
|
{
|
|
141
|
-
apiKey: auth.apiKey,
|
|
142
|
-
headers: auth.headers,
|
|
143
|
-
env: auth.env,
|
|
144
135
|
signal: loader.signal,
|
|
145
136
|
cacheRetention: "none",
|
|
146
137
|
sessionId: uuidv7(),
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 3. Loads the result into the editor for user to fill in answers
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import type { UserMessage } from "@earendil-works/pi-ai";
|
|
11
11
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
12
12
|
import { BorderedLoader } from "@earendil-works/pi-coding-agent";
|
|
13
13
|
|
|
@@ -77,20 +77,16 @@ export default function (pi: ExtensionAPI) {
|
|
|
77
77
|
|
|
78
78
|
// Do the work
|
|
79
79
|
const doExtract = async () => {
|
|
80
|
-
const auth = await ctx.modelRegistry.getApiKeyAndHeaders(ctx.model!);
|
|
81
|
-
if (!auth.ok || !auth.apiKey) {
|
|
82
|
-
throw new Error(auth.ok ? `No API key for ${ctx.model!.provider}` : auth.error);
|
|
83
|
-
}
|
|
84
80
|
const userMessage: UserMessage = {
|
|
85
81
|
role: "user",
|
|
86
82
|
content: [{ type: "text", text: lastAssistantText! }],
|
|
87
83
|
timestamp: Date.now(),
|
|
88
84
|
};
|
|
89
85
|
|
|
90
|
-
const response = await complete(
|
|
86
|
+
const response = await ctx.modelRegistry.complete(
|
|
91
87
|
ctx.model!,
|
|
92
88
|
{ systemPrompt: SYSTEM_PROMPT, messages: [userMessage] },
|
|
93
|
-
{
|
|
89
|
+
{ signal: loader.signal },
|
|
94
90
|
);
|
|
95
91
|
|
|
96
92
|
if (response.stopReason === "aborted") {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-sandbox",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-sandbox",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.14.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sandbox-runtime": "^0.0.26"
|
|
12
12
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { uuidv7 } from "@earendil-works/pi-ai";
|
|
2
|
-
import { complete, getModel } from "@earendil-works/pi-ai/compat";
|
|
3
2
|
import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
4
3
|
import { DynamicBorder, getMarkdownTheme } from "@earendil-works/pi-coding-agent";
|
|
5
4
|
import { Container, Markdown, matchesKey, Text } from "@earendil-works/pi-tui";
|
|
@@ -161,20 +160,13 @@ export default function (pi: ExtensionAPI) {
|
|
|
161
160
|
ctx.ui.notify("Preparing summary...", "info");
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
const model =
|
|
165
|
-
if (!model
|
|
166
|
-
ctx.ui.notify("Model openai/gpt-5.2 not found", "warning");
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const auth = model ? await ctx.modelRegistry.getApiKeyAndHeaders(model) : undefined;
|
|
170
|
-
if (auth && !auth.ok && ctx.hasUI) {
|
|
171
|
-
ctx.ui.notify(auth.error, "warning");
|
|
172
|
-
}
|
|
173
|
-
if (auth?.ok && !auth.apiKey && ctx.hasUI) {
|
|
174
|
-
ctx.ui.notify("No API key for openai/gpt-5.2", "warning");
|
|
163
|
+
const model = ctx.modelRegistry.find("openai", "gpt-5.2");
|
|
164
|
+
if (!model) {
|
|
165
|
+
if (ctx.hasUI) ctx.ui.notify("Model openai/gpt-5.2 not found", "warning");
|
|
166
|
+
return;
|
|
175
167
|
}
|
|
176
|
-
|
|
177
|
-
|
|
168
|
+
if (!ctx.modelRegistry.hasConfiguredAuth(model)) {
|
|
169
|
+
if (ctx.hasUI) ctx.ui.notify("No authentication configured for openai/gpt-5.2", "warning");
|
|
178
170
|
return;
|
|
179
171
|
}
|
|
180
172
|
|
|
@@ -186,13 +178,10 @@ export default function (pi: ExtensionAPI) {
|
|
|
186
178
|
},
|
|
187
179
|
];
|
|
188
180
|
|
|
189
|
-
const response = await complete(
|
|
181
|
+
const response = await ctx.modelRegistry.complete(
|
|
190
182
|
model,
|
|
191
183
|
{ messages: summaryMessages },
|
|
192
184
|
{
|
|
193
|
-
apiKey: auth.apiKey,
|
|
194
|
-
headers: auth.headers,
|
|
195
|
-
env: auth.env,
|
|
196
185
|
reasoningEffort: "high",
|
|
197
186
|
cacheRetention: "none",
|
|
198
187
|
sessionId: uuidv7(),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-with-deps",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-with-deps",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.84.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"ms": "^2.1.3"
|
|
12
12
|
},
|
|
@@ -18,7 +18,16 @@ import { spawn } from "node:child_process";
|
|
|
18
18
|
import { dirname, join } from "node:path";
|
|
19
19
|
import * as readline from "node:readline";
|
|
20
20
|
import { fileURLToPath } from "node:url";
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
type Component,
|
|
23
|
+
Container,
|
|
24
|
+
Input,
|
|
25
|
+
matchesKey,
|
|
26
|
+
ProcessTerminal,
|
|
27
|
+
SelectList,
|
|
28
|
+
type TUI,
|
|
29
|
+
TuiMainScreen,
|
|
30
|
+
} from "@earendil-works/pi-tui";
|
|
22
31
|
|
|
23
32
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
24
33
|
|
|
@@ -267,7 +276,7 @@ async function main() {
|
|
|
267
276
|
// -- TUI setup --
|
|
268
277
|
|
|
269
278
|
const terminal = new ProcessTerminal();
|
|
270
|
-
const tui = new
|
|
279
|
+
const tui: TUI = new TuiMainScreen(terminal);
|
|
271
280
|
|
|
272
281
|
const outputLog = new OutputLog();
|
|
273
282
|
const loadingIndicator = new LoadingIndicator();
|
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
* Shows how to select a specific model and thinking level.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { getModel } from "@earendil-works/pi-ai/compat";
|
|
8
7
|
import { createAgentSession, ModelRuntime } from "@earendil-works/pi-coding-agent";
|
|
9
8
|
|
|
10
9
|
const modelRuntime = await ModelRuntime.create();
|
|
11
10
|
|
|
12
11
|
// Option 1: Find a specific built-in model by provider/id
|
|
13
|
-
const opus = getModel("anthropic", "claude-opus-4-5");
|
|
12
|
+
const opus = modelRuntime.getModel("anthropic", "claude-opus-4-5");
|
|
14
13
|
if (opus) {
|
|
15
14
|
console.log(`Found model: ${opus.provider}/${opus.id}`);
|
|
16
15
|
}
|
|
@@ -25,7 +25,7 @@ const { session: customAuthSession } = await createAgentSession({
|
|
|
25
25
|
console.log("Session with custom auth and models locations");
|
|
26
26
|
customAuthSession.dispose();
|
|
27
27
|
|
|
28
|
-
modelRuntime.setRuntimeApiKey("anthropic", "sk-my-temp-key");
|
|
28
|
+
await modelRuntime.setRuntimeApiKey("anthropic", "sk-my-temp-key");
|
|
29
29
|
const { session: runtimeKeySession } = await createAgentSession({
|
|
30
30
|
sessionManager: SessionManager.inMemory(),
|
|
31
31
|
modelRuntime,
|
|
@@ -19,7 +19,7 @@ const modelRuntime = await ModelRuntime.create({
|
|
|
19
19
|
modelsPath: "/tmp/my-agent/models.json",
|
|
20
20
|
});
|
|
21
21
|
if (process.env.MY_ANTHROPIC_KEY) {
|
|
22
|
-
modelRuntime.setRuntimeApiKey("anthropic", process.env.MY_ANTHROPIC_KEY);
|
|
22
|
+
await modelRuntime.setRuntimeApiKey("anthropic", process.env.MY_ANTHROPIC_KEY);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const model = getModel("anthropic", "claude-sonnet-4-5");
|
|
@@ -41,7 +41,9 @@ const resourceLoader: ResourceLoader = {
|
|
|
41
41
|
getAgentsFiles: () => ({ agentsFiles: [] }),
|
|
42
42
|
getSystemPrompt: () => `You are a minimal assistant.
|
|
43
43
|
Available: read, bash. Be concise.`,
|
|
44
|
+
getSystemPromptSource: () => undefined,
|
|
44
45
|
getAppendSystemPrompt: () => [],
|
|
46
|
+
getAppendSystemPromptSources: () => [],
|
|
45
47
|
extendResources: () => {},
|
|
46
48
|
reload: async () => {},
|
|
47
49
|
};
|
package/examples/sdk/README.md
CHANGED
|
@@ -71,7 +71,7 @@ const customRuntime = await ModelRuntime.create({
|
|
|
71
71
|
authPath: "/my/app/auth.json",
|
|
72
72
|
modelsPath: "/my/app/models.json",
|
|
73
73
|
});
|
|
74
|
-
customRuntime.setRuntimeApiKey("anthropic", process.env.MY_KEY!);
|
|
74
|
+
await customRuntime.setRuntimeApiKey("anthropic", process.env.MY_KEY!);
|
|
75
75
|
|
|
76
76
|
const resourceLoader = new DefaultResourceLoader({
|
|
77
77
|
systemPromptOverride: () => "You are helpful.",
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/pi-coding-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@earendil-works/pi-coding-agent",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.84.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
13
|
-
"@earendil-works/pi-ai": "^0.
|
|
14
|
-
"@earendil-works/pi-
|
|
12
|
+
"@earendil-works/pi-agent-core": "^0.84.0",
|
|
13
|
+
"@earendil-works/pi-ai": "^0.84.0",
|
|
14
|
+
"@earendil-works/pi-client": "^0.84.0",
|
|
15
|
+
"@earendil-works/pi-protocol": "^0.84.0",
|
|
16
|
+
"@earendil-works/pi-tui": "^0.84.0",
|
|
15
17
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
16
18
|
"chalk": "5.6.2",
|
|
17
19
|
"cross-spawn": "7.0.6",
|
|
18
20
|
"diff": "8.0.4",
|
|
19
21
|
"glob": "13.0.6",
|
|
22
|
+
"grok-mermaid": "0.2.2",
|
|
20
23
|
"highlight.js": "10.7.3",
|
|
21
24
|
"hosted-git-info": "9.0.3",
|
|
22
25
|
"ignore": "7.0.5",
|
|
@@ -24,8 +27,8 @@
|
|
|
24
27
|
"minimatch": "10.2.5",
|
|
25
28
|
"proper-lockfile": "4.1.2",
|
|
26
29
|
"semver": "7.8.0",
|
|
27
|
-
"typebox": "1.
|
|
28
|
-
"undici": "8.
|
|
30
|
+
"typebox": "1.3.7",
|
|
31
|
+
"undici": "8.9.0",
|
|
29
32
|
"yaml": "2.9.0"
|
|
30
33
|
},
|
|
31
34
|
"optionalDependencies": {
|
|
@@ -474,14 +477,15 @@
|
|
|
474
477
|
}
|
|
475
478
|
},
|
|
476
479
|
"node_modules/@earendil-works/pi-agent-core": {
|
|
477
|
-
"version": "0.
|
|
478
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.
|
|
480
|
+
"version": "0.84.0",
|
|
481
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.84.0.tgz",
|
|
479
482
|
"license": "MIT",
|
|
480
483
|
"dependencies": {
|
|
481
|
-
"@earendil-works/pi-ai": "^0.
|
|
484
|
+
"@earendil-works/pi-ai": "^0.84.0",
|
|
485
|
+
"@earendil-works/pi-telemetry": "^0.84.0",
|
|
482
486
|
"diff": "8.0.4",
|
|
483
487
|
"ignore": "7.0.5",
|
|
484
|
-
"typebox": "1.
|
|
488
|
+
"typebox": "1.3.7",
|
|
485
489
|
"yaml": "2.9.0"
|
|
486
490
|
},
|
|
487
491
|
"engines": {
|
|
@@ -489,12 +493,13 @@
|
|
|
489
493
|
}
|
|
490
494
|
},
|
|
491
495
|
"node_modules/@earendil-works/pi-ai": {
|
|
492
|
-
"version": "0.
|
|
493
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.
|
|
496
|
+
"version": "0.84.0",
|
|
497
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.84.0.tgz",
|
|
494
498
|
"license": "MIT",
|
|
495
499
|
"dependencies": {
|
|
496
500
|
"@anthropic-ai/sdk": "0.91.1",
|
|
497
501
|
"@aws-sdk/client-bedrock-runtime": "3.1048.0",
|
|
502
|
+
"@earendil-works/pi-telemetry": "^0.84.0",
|
|
498
503
|
"@google/genai": "1.52.0",
|
|
499
504
|
"@mistralai/mistralai": "2.2.6",
|
|
500
505
|
"@opentelemetry/api": "1.9.0",
|
|
@@ -503,7 +508,7 @@
|
|
|
503
508
|
"https-proxy-agent": "7.0.6",
|
|
504
509
|
"openai": "6.26.0",
|
|
505
510
|
"partial-json": "0.1.7",
|
|
506
|
-
"typebox": "1.
|
|
511
|
+
"typebox": "1.3.7"
|
|
507
512
|
},
|
|
508
513
|
"bin": {
|
|
509
514
|
"pi-ai": "dist/cli.js"
|
|
@@ -512,9 +517,39 @@
|
|
|
512
517
|
"node": ">=22.19.0"
|
|
513
518
|
}
|
|
514
519
|
},
|
|
520
|
+
"node_modules/@earendil-works/pi-client": {
|
|
521
|
+
"version": "0.84.0",
|
|
522
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.84.0.tgz",
|
|
523
|
+
"license": "MIT",
|
|
524
|
+
"dependencies": {
|
|
525
|
+
"@earendil-works/pi-protocol": "^0.84.0"
|
|
526
|
+
},
|
|
527
|
+
"engines": {
|
|
528
|
+
"node": ">=22.19.0"
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
"node_modules/@earendil-works/pi-protocol": {
|
|
532
|
+
"version": "0.84.0",
|
|
533
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.84.0.tgz",
|
|
534
|
+
"license": "MIT",
|
|
535
|
+
"dependencies": {
|
|
536
|
+
"typebox": "1.3.7"
|
|
537
|
+
},
|
|
538
|
+
"engines": {
|
|
539
|
+
"node": ">=22.19.0"
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
"node_modules/@earendil-works/pi-telemetry": {
|
|
543
|
+
"version": "0.84.0",
|
|
544
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.84.0.tgz",
|
|
545
|
+
"license": "MIT",
|
|
546
|
+
"engines": {
|
|
547
|
+
"node": ">=22.19.0"
|
|
548
|
+
}
|
|
549
|
+
},
|
|
515
550
|
"node_modules/@earendil-works/pi-tui": {
|
|
516
|
-
"version": "0.
|
|
517
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.
|
|
551
|
+
"version": "0.84.0",
|
|
552
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.84.0.tgz",
|
|
518
553
|
"license": "MIT",
|
|
519
554
|
"dependencies": {
|
|
520
555
|
"get-east-asian-width": "1.6.0",
|
|
@@ -1023,15 +1058,15 @@
|
|
|
1023
1058
|
"license": "MIT"
|
|
1024
1059
|
},
|
|
1025
1060
|
"node_modules/brace-expansion": {
|
|
1026
|
-
"version": "5.0.
|
|
1027
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.
|
|
1028
|
-
"integrity": "sha512-
|
|
1061
|
+
"version": "5.0.9",
|
|
1062
|
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
|
1063
|
+
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
|
1029
1064
|
"license": "MIT",
|
|
1030
1065
|
"dependencies": {
|
|
1031
1066
|
"balanced-match": "^4.0.2"
|
|
1032
1067
|
},
|
|
1033
1068
|
"engines": {
|
|
1034
|
-
"node": "
|
|
1069
|
+
"node": "20 || >=22"
|
|
1035
1070
|
}
|
|
1036
1071
|
},
|
|
1037
1072
|
"node_modules/buffer-equal-constant-time": {
|
|
@@ -1277,6 +1312,15 @@
|
|
|
1277
1312
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
|
1278
1313
|
"license": "ISC"
|
|
1279
1314
|
},
|
|
1315
|
+
"node_modules/grok-mermaid": {
|
|
1316
|
+
"version": "0.2.2",
|
|
1317
|
+
"resolved": "https://registry.npmjs.org/grok-mermaid/-/grok-mermaid-0.2.2.tgz",
|
|
1318
|
+
"integrity": "sha512-XcJEP5dDC8liHBh52mlLjU18fNvu1ckFsu0QpIG3+APZ270fsj9wxpiA6cOURmbUEuoMVgjbC2+UYgTdCqqgzA==",
|
|
1319
|
+
"license": "Apache-2.0",
|
|
1320
|
+
"engines": {
|
|
1321
|
+
"node": ">=18"
|
|
1322
|
+
}
|
|
1323
|
+
},
|
|
1280
1324
|
"node_modules/highlight.js": {
|
|
1281
1325
|
"version": "10.7.3",
|
|
1282
1326
|
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
|
|
@@ -1708,15 +1752,15 @@
|
|
|
1708
1752
|
"license": "0BSD"
|
|
1709
1753
|
},
|
|
1710
1754
|
"node_modules/typebox": {
|
|
1711
|
-
"version": "1.
|
|
1712
|
-
"resolved": "https://registry.npmjs.org/typebox/-/typebox-1.
|
|
1713
|
-
"integrity": "sha512-
|
|
1755
|
+
"version": "1.3.7",
|
|
1756
|
+
"resolved": "https://registry.npmjs.org/typebox/-/typebox-1.3.7.tgz",
|
|
1757
|
+
"integrity": "sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==",
|
|
1714
1758
|
"license": "MIT"
|
|
1715
1759
|
},
|
|
1716
1760
|
"node_modules/undici": {
|
|
1717
|
-
"version": "8.
|
|
1718
|
-
"resolved": "https://registry.npmjs.org/undici/-/undici-8.
|
|
1719
|
-
"integrity": "sha512-
|
|
1761
|
+
"version": "8.9.0",
|
|
1762
|
+
"resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz",
|
|
1763
|
+
"integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==",
|
|
1720
1764
|
"license": "MIT",
|
|
1721
1765
|
"engines": {
|
|
1722
1766
|
"node": ">=22.19.0"
|