stagent 0.1.11 → 0.1.12
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 +35 -4
- package/package.json +3 -2
- package/src/__tests__/e2e/blueprint.test.ts +63 -0
- package/src/__tests__/e2e/cross-runtime.test.ts +77 -0
- package/src/__tests__/e2e/helpers.ts +286 -0
- package/src/__tests__/e2e/parallel-workflow.test.ts +120 -0
- package/src/__tests__/e2e/sequence-workflow.test.ts +109 -0
- package/src/__tests__/e2e/setup.ts +156 -0
- package/src/__tests__/e2e/single-task.test.ts +170 -0
- package/src/app/api/command-palette/recent/route.ts +41 -18
- package/src/app/api/context/batch/route.ts +44 -0
- package/src/app/api/permissions/presets/route.ts +80 -0
- package/src/app/api/playbook/status/route.ts +15 -0
- package/src/app/api/profiles/route.ts +23 -20
- package/src/app/api/settings/pricing/route.ts +15 -0
- package/src/app/costs/page.tsx +53 -43
- package/src/app/playbook/[slug]/page.tsx +76 -0
- package/src/app/playbook/page.tsx +54 -0
- package/src/app/profiles/page.tsx +7 -4
- package/src/app/settings/page.tsx +2 -2
- package/src/components/costs/cost-dashboard.tsx +226 -320
- package/src/components/dashboard/activity-feed.tsx +6 -2
- package/src/components/notifications/batch-proposal-review.tsx +150 -0
- package/src/components/notifications/notification-item.tsx +6 -3
- package/src/components/notifications/pending-approval-host.tsx +57 -11
- package/src/components/playbook/adoption-heatmap.tsx +69 -0
- package/src/components/playbook/journey-card.tsx +110 -0
- package/src/components/playbook/playbook-action-button.tsx +22 -0
- package/src/components/playbook/playbook-browser.tsx +143 -0
- package/src/components/playbook/playbook-card.tsx +102 -0
- package/src/components/playbook/playbook-detail-view.tsx +223 -0
- package/src/components/playbook/playbook-homepage.tsx +142 -0
- package/src/components/playbook/playbook-toc.tsx +90 -0
- package/src/components/playbook/playbook-updated-badge.tsx +23 -0
- package/src/components/playbook/related-docs.tsx +30 -0
- package/src/components/profiles/__tests__/learned-context-panel.test.tsx +175 -0
- package/src/components/profiles/context-proposal-review.tsx +7 -3
- package/src/components/profiles/learned-context-panel.tsx +116 -8
- package/src/components/profiles/profile-detail-view.tsx +6 -3
- package/src/components/settings/__tests__/auth-config-section.test.tsx +147 -0
- package/src/components/settings/api-key-form.tsx +5 -43
- package/src/components/settings/auth-config-section.tsx +10 -6
- package/src/components/settings/auth-status-badge.tsx +8 -0
- package/src/components/settings/budget-guardrails-section.tsx +403 -620
- package/src/components/settings/connection-test-control.tsx +63 -0
- package/src/components/settings/permissions-section.tsx +85 -75
- package/src/components/settings/permissions-sections.tsx +24 -0
- package/src/components/settings/presets-section.tsx +159 -0
- package/src/components/settings/pricing-registry-panel.tsx +164 -0
- package/src/components/shared/app-sidebar.tsx +2 -0
- package/src/components/shared/command-palette.tsx +30 -0
- package/src/components/shared/light-markdown.tsx +134 -0
- package/src/components/workflows/loop-status-view.tsx +8 -4
- package/src/components/workflows/workflow-status-view.tsx +16 -9
- package/src/lib/agents/learned-context.ts +27 -15
- package/src/lib/agents/learning-session.ts +234 -0
- package/src/lib/agents/pattern-extractor.ts +19 -0
- package/src/lib/agents/profiles/__tests__/sort.test.ts +42 -0
- package/src/lib/agents/profiles/sort.ts +7 -0
- package/src/lib/constants/settings.ts +1 -0
- package/src/lib/db/schema.ts +3 -0
- package/src/lib/docs/adoption.ts +105 -0
- package/src/lib/docs/journey-tracker.ts +21 -0
- package/src/lib/docs/reader.ts +102 -0
- package/src/lib/docs/types.ts +54 -0
- package/src/lib/docs/usage-stage.ts +60 -0
- package/src/lib/notifications/actionable.ts +18 -10
- package/src/lib/settings/__tests__/budget-guardrails.test.ts +86 -24
- package/src/lib/settings/budget-guardrails.ts +213 -85
- package/src/lib/settings/permission-presets.ts +150 -0
- package/src/lib/settings/runtime-setup.ts +71 -0
- package/src/lib/usage/__tests__/ledger.test.ts +2 -2
- package/src/lib/usage/__tests__/pricing-registry.test.ts +78 -0
- package/src/lib/usage/ledger.ts +1 -1
- package/src/lib/usage/pricing-registry.ts +570 -0
- package/src/lib/usage/pricing.ts +15 -95
- package/src/lib/utils/__tests__/learned-context-history.test.ts +171 -0
- package/src/lib/utils/learned-context-history.ts +150 -0
- package/src/lib/validators/__tests__/settings.test.ts +23 -16
- package/src/lib/validators/settings.ts +3 -9
- package/src/lib/workflows/engine.ts +18 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect, useCallback } from "react";
|
|
4
|
+
|
|
4
5
|
import {
|
|
5
6
|
Card,
|
|
6
7
|
CardContent,
|
|
@@ -12,6 +13,7 @@ import { Separator } from "@/components/ui/separator";
|
|
|
12
13
|
import { AuthMethodSelector } from "./auth-method-selector";
|
|
13
14
|
import { ApiKeyForm } from "./api-key-form";
|
|
14
15
|
import { AuthStatusBadge } from "./auth-status-badge";
|
|
16
|
+
import { ConnectionTestControl } from "./connection-test-control";
|
|
15
17
|
import type { AuthMethod, ApiKeySource } from "@/lib/constants/settings";
|
|
16
18
|
import {
|
|
17
19
|
DEFAULT_AGENT_RUNTIME,
|
|
@@ -32,6 +34,7 @@ export function AuthConfigSection() {
|
|
|
32
34
|
apiKeySource: "unknown",
|
|
33
35
|
});
|
|
34
36
|
const [connected, setConnected] = useState(false);
|
|
37
|
+
const [testControlKey, setTestControlKey] = useState(0);
|
|
35
38
|
|
|
36
39
|
const fetchSettings = useCallback(async () => {
|
|
37
40
|
const res = await fetch("/api/settings");
|
|
@@ -55,6 +58,8 @@ export function AuthConfigSection() {
|
|
|
55
58
|
if (res.ok) {
|
|
56
59
|
const data = await res.json();
|
|
57
60
|
setSettings(data);
|
|
61
|
+
setConnected(data.hasKey || data.apiKeySource === "oauth");
|
|
62
|
+
setTestControlKey((current) => current + 1);
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
65
|
|
|
@@ -102,6 +107,7 @@ export function AuthConfigSection() {
|
|
|
102
107
|
<>
|
|
103
108
|
<Separator />
|
|
104
109
|
<ApiKeyForm
|
|
110
|
+
key={`api-key-form-${testControlKey}`}
|
|
105
111
|
hasKey={settings.hasKey}
|
|
106
112
|
onSave={handleSaveKey}
|
|
107
113
|
onTest={handleTestConnection}
|
|
@@ -126,12 +132,10 @@ export function AuthConfigSection() {
|
|
|
126
132
|
OAuth mode uses the Claude Agent SDK's built-in authentication flow.
|
|
127
133
|
Requires an active Claude Max or Pro subscription.
|
|
128
134
|
</p>
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
Test OAuth connection
|
|
134
|
-
</button>
|
|
135
|
+
<ConnectionTestControl
|
|
136
|
+
key={`oauth-test-${testControlKey}`}
|
|
137
|
+
onTest={handleTestConnection}
|
|
138
|
+
/>
|
|
135
139
|
</div>
|
|
136
140
|
</>
|
|
137
141
|
)}
|
|
@@ -32,6 +32,14 @@ export function AuthStatusBadge({ connected, apiKeySource }: AuthStatusBadgeProp
|
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
if (apiKeySource === "unknown") {
|
|
36
|
+
return (
|
|
37
|
+
<Badge variant="outline" className="border-success/50 text-success">
|
|
38
|
+
Connected
|
|
39
|
+
</Badge>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
35
43
|
return (
|
|
36
44
|
<Badge variant="outline" className="border-success/50 text-success">
|
|
37
45
|
Connected via {sourceLabels[apiKeySource]}
|