gsd-pi 2.37.1-dev.7775114 → 2.37.1-dev.d3ace49
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 +1 -1
- package/dist/onboarding.js +1 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +67 -1
- package/dist/resources/extensions/gsd/auto-post-unit.js +14 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +91 -2
- package/dist/resources/extensions/gsd/auto-recovery.js +37 -1
- package/dist/resources/extensions/gsd/doctor-providers.js +35 -1
- package/dist/resources/extensions/gsd/files.js +41 -0
- package/dist/resources/extensions/gsd/observability-validator.js +24 -0
- package/dist/resources/extensions/gsd/preferences-types.js +2 -1
- package/dist/resources/extensions/gsd/preferences-validation.js +42 -0
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -1
- package/dist/resources/extensions/gsd/prompts/reactive-execute.md +41 -0
- package/dist/resources/extensions/gsd/reactive-graph.js +227 -0
- package/dist/resources/extensions/gsd/templates/task-plan.md +11 -3
- package/package.json +2 -1
- package/packages/pi-ai/dist/env-api-keys.js +13 -0
- package/packages/pi-ai/dist/env-api-keys.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +172 -0
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +172 -0
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +64 -0
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-shared.js +668 -0
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-vertex.d.ts +5 -0
- package/packages/pi-ai/dist/providers/anthropic-vertex.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-vertex.js +85 -0
- package/packages/pi-ai/dist/providers/anthropic-vertex.js.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic.d.ts +4 -30
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +47 -764
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/register-builtins.js +6 -0
- package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
- package/packages/pi-ai/dist/types.d.ts +2 -2
- package/packages/pi-ai/dist/types.d.ts.map +1 -1
- package/packages/pi-ai/dist/types.js.map +1 -1
- package/packages/pi-ai/package.json +1 -0
- package/packages/pi-ai/src/env-api-keys.ts +14 -0
- package/packages/pi-ai/src/models.generated.ts +172 -0
- package/packages/pi-ai/src/providers/anthropic-shared.ts +761 -0
- package/packages/pi-ai/src/providers/anthropic-vertex.ts +130 -0
- package/packages/pi-ai/src/providers/anthropic.ts +76 -868
- package/packages/pi-ai/src/providers/register-builtins.ts +7 -0
- package/packages/pi-ai/src/types.ts +2 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js +1 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/packages/pi-coding-agent/src/core/model-resolver.ts +1 -0
- package/src/resources/extensions/gsd/auto-dispatch.ts +93 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +14 -0
- package/src/resources/extensions/gsd/auto-prompts.ts +125 -3
- package/src/resources/extensions/gsd/auto-recovery.ts +42 -0
- package/src/resources/extensions/gsd/doctor-providers.ts +38 -1
- package/src/resources/extensions/gsd/files.ts +45 -0
- package/src/resources/extensions/gsd/observability-validator.ts +27 -0
- package/src/resources/extensions/gsd/preferences-types.ts +5 -1
- package/src/resources/extensions/gsd/preferences-validation.ts +41 -0
- package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -1
- package/src/resources/extensions/gsd/prompts/reactive-execute.md +41 -0
- package/src/resources/extensions/gsd/reactive-graph.ts +289 -0
- package/src/resources/extensions/gsd/templates/task-plan.md +11 -3
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +108 -3
- package/src/resources/extensions/gsd/tests/plan-quality-validator.test.ts +111 -0
- package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +511 -0
- package/src/resources/extensions/gsd/tests/reactive-graph.test.ts +299 -0
- package/src/resources/extensions/gsd/types.ts +43 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// Lazy-loaded: Anthropic Vertex SDK is imported on first use, not at startup.
|
|
2
|
+
// This avoids penalizing users who don't use Anthropic Vertex models.
|
|
3
|
+
import type Anthropic from "@anthropic-ai/sdk";
|
|
4
|
+
import type { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
|
|
5
|
+
import { getEnvApiKey } from "../env-api-keys.js";
|
|
6
|
+
import type {
|
|
7
|
+
Context,
|
|
8
|
+
Model,
|
|
9
|
+
SimpleStreamOptions,
|
|
10
|
+
StreamFunction,
|
|
11
|
+
} from "../types.js";
|
|
12
|
+
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
13
|
+
import { adjustMaxTokensForThinking, buildBaseOptions } from "./simple-options.js";
|
|
14
|
+
import {
|
|
15
|
+
type AnthropicOptions,
|
|
16
|
+
mapThinkingLevelToEffort,
|
|
17
|
+
processAnthropicStream,
|
|
18
|
+
supportsAdaptiveThinking,
|
|
19
|
+
} from "./anthropic-shared.js";
|
|
20
|
+
|
|
21
|
+
let _AnthropicVertexClass: typeof AnthropicVertex | undefined;
|
|
22
|
+
let _AnthropicSdkClass: typeof Anthropic | undefined;
|
|
23
|
+
|
|
24
|
+
async function getAnthropicVertexClass(): Promise<typeof AnthropicVertex> {
|
|
25
|
+
if (!_AnthropicVertexClass) {
|
|
26
|
+
const mod = await import("@anthropic-ai/vertex-sdk");
|
|
27
|
+
_AnthropicVertexClass = mod.AnthropicVertex;
|
|
28
|
+
}
|
|
29
|
+
return _AnthropicVertexClass;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async function getAnthropicSdkClass(): Promise<typeof Anthropic> {
|
|
33
|
+
if (!_AnthropicSdkClass) {
|
|
34
|
+
const mod = await import("@anthropic-ai/sdk");
|
|
35
|
+
_AnthropicSdkClass = mod.default;
|
|
36
|
+
}
|
|
37
|
+
return _AnthropicSdkClass;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function resolveProjectId(): string {
|
|
41
|
+
const projectId = process.env.ANTHROPIC_VERTEX_PROJECT_ID
|
|
42
|
+
|| process.env.GOOGLE_CLOUD_PROJECT
|
|
43
|
+
|| process.env.GCLOUD_PROJECT;
|
|
44
|
+
if (!projectId) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
"Anthropic Vertex requires a project ID. Set ANTHROPIC_VERTEX_PROJECT_ID, GOOGLE_CLOUD_PROJECT, or GCLOUD_PROJECT.",
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return projectId;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function resolveRegion(): string {
|
|
53
|
+
return process.env.CLOUD_ML_REGION
|
|
54
|
+
|| process.env.GOOGLE_CLOUD_LOCATION
|
|
55
|
+
|| "us-central1";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function createVertexClient(): Promise<AnthropicVertex> {
|
|
59
|
+
const AnthropicVertexClass = await getAnthropicVertexClass();
|
|
60
|
+
const projectId = resolveProjectId();
|
|
61
|
+
const region = resolveRegion();
|
|
62
|
+
|
|
63
|
+
return new AnthropicVertexClass({
|
|
64
|
+
projectId,
|
|
65
|
+
region,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const streamAnthropicVertex: StreamFunction<"anthropic-vertex", AnthropicOptions> = (
|
|
70
|
+
model: Model<"anthropic-vertex">,
|
|
71
|
+
context: Context,
|
|
72
|
+
options?: AnthropicOptions,
|
|
73
|
+
): AssistantMessageEventStream => {
|
|
74
|
+
const stream = new AssistantMessageEventStream();
|
|
75
|
+
|
|
76
|
+
(async () => {
|
|
77
|
+
const client = await createVertexClient();
|
|
78
|
+
const AnthropicSdk = await getAnthropicSdkClass();
|
|
79
|
+
|
|
80
|
+
processAnthropicStream(stream, {
|
|
81
|
+
client: client as unknown as Anthropic,
|
|
82
|
+
model,
|
|
83
|
+
context,
|
|
84
|
+
isOAuthToken: false,
|
|
85
|
+
options,
|
|
86
|
+
AnthropicSdkClass: AnthropicSdk,
|
|
87
|
+
});
|
|
88
|
+
})();
|
|
89
|
+
|
|
90
|
+
return stream;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export const streamSimpleAnthropicVertex: StreamFunction<"anthropic-vertex", SimpleStreamOptions> = (
|
|
94
|
+
model: Model<"anthropic-vertex">,
|
|
95
|
+
context: Context,
|
|
96
|
+
options?: SimpleStreamOptions,
|
|
97
|
+
): AssistantMessageEventStream => {
|
|
98
|
+
const apiKey = options?.apiKey || getEnvApiKey(model.provider);
|
|
99
|
+
if (!apiKey) {
|
|
100
|
+
throw new Error(`No API key found for provider: ${model.provider}. Set ANTHROPIC_VERTEX_PROJECT_ID to use Claude on Vertex AI.`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const base = buildBaseOptions(model, options, apiKey);
|
|
104
|
+
if (!options?.reasoning) {
|
|
105
|
+
return streamAnthropicVertex(model, context, { ...base, thinkingEnabled: false } satisfies AnthropicOptions);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (supportsAdaptiveThinking(model.id)) {
|
|
109
|
+
const effort = mapThinkingLevelToEffort(options.reasoning, model.id);
|
|
110
|
+
return streamAnthropicVertex(model, context, {
|
|
111
|
+
...base,
|
|
112
|
+
thinkingEnabled: true,
|
|
113
|
+
effort,
|
|
114
|
+
} satisfies AnthropicOptions);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const adjusted = adjustMaxTokensForThinking(
|
|
118
|
+
base.maxTokens || 0,
|
|
119
|
+
model.maxTokens,
|
|
120
|
+
options.reasoning,
|
|
121
|
+
options.thinkingBudgets,
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
return streamAnthropicVertex(model, context, {
|
|
125
|
+
...base,
|
|
126
|
+
maxTokens: adjusted.maxTokens,
|
|
127
|
+
thinkingEnabled: true,
|
|
128
|
+
thinkingBudgetTokens: adjusted.thinkingBudget,
|
|
129
|
+
} satisfies AnthropicOptions);
|
|
130
|
+
};
|