@prestyj/cli 5.30.2 → 5.31.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/dist/app-sidecar/app-settings.d.ts +6 -2
- package/dist/app-sidecar/app-settings.js +39 -20
- package/dist/app-sidecar/app-settings.js.map +1 -1
- package/dist/app-sidecar/git-target.d.ts +17 -0
- package/dist/app-sidecar/git-target.js +31 -0
- package/dist/app-sidecar/git-target.js.map +1 -0
- package/dist/app-sidecar/goal-routes.d.ts +6 -0
- package/dist/app-sidecar/goal-routes.js +360 -0
- package/dist/app-sidecar/goal-routes.js.map +1 -0
- package/dist/app-sidecar/history-routes.d.ts +13 -0
- package/dist/app-sidecar/history-routes.js +37 -27
- package/dist/app-sidecar/history-routes.js.map +1 -1
- package/dist/app-sidecar/mcp-routes.js +1 -2
- package/dist/app-sidecar/mcp-routes.js.map +1 -1
- package/dist/app-sidecar/prompt-routes.js +1 -2
- package/dist/app-sidecar/prompt-routes.js.map +1 -1
- package/dist/app-sidecar/route-context.d.ts +12 -0
- package/dist/app-sidecar/run-control-routes.js +2 -1
- package/dist/app-sidecar/run-control-routes.js.map +1 -1
- package/dist/app-sidecar/session-routes.js +41 -0
- package/dist/app-sidecar/session-routes.js.map +1 -1
- package/dist/app-sidecar/session-types.d.ts +2 -0
- package/dist/app-sidecar/workspace-routes.js +13 -95
- package/dist/app-sidecar/workspace-routes.js.map +1 -1
- package/dist/app-sidecar.js +219 -67
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli/shared.js +1 -1
- package/dist/cli/shared.js.map +1 -1
- package/dist/core/acceptance-checks.js +17 -4
- package/dist/core/acceptance-checks.js.map +1 -1
- package/dist/core/agent-notifications.d.ts +1 -1
- package/dist/core/agent-session.d.ts +90 -5
- package/dist/core/agent-session.js +185 -63
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/ask-user.d.ts +11 -0
- package/dist/core/ask-user.js +6 -1
- package/dist/core/ask-user.js.map +1 -1
- package/dist/core/auth-providers.d.ts +2 -80
- package/dist/core/auth-providers.js +4 -183
- package/dist/core/auth-providers.js.map +1 -1
- package/dist/core/cache-diagnostics.d.ts +1 -1
- package/dist/core/cache-diagnostics.js +2 -1
- package/dist/core/cache-diagnostics.js.map +1 -1
- package/dist/core/compaction/tool-result-pruner.d.ts +10 -0
- package/dist/core/compaction/tool-result-pruner.js +12 -0
- package/dist/core/compaction/tool-result-pruner.js.map +1 -1
- package/dist/core/context-files.d.ts +8 -0
- package/dist/core/context-files.js +46 -0
- package/dist/core/context-files.js.map +1 -0
- package/dist/core/custom-commands.d.ts +6 -0
- package/dist/core/custom-commands.js +17 -0
- package/dist/core/custom-commands.js.map +1 -1
- package/dist/core/env-delta.d.ts +9 -1
- package/dist/core/env-delta.js +20 -0
- package/dist/core/env-delta.js.map +1 -1
- package/dist/core/goal-summary.d.ts +32 -0
- package/dist/core/goal-summary.js +104 -0
- package/dist/core/goal-summary.js.map +1 -0
- package/dist/core/goals-store.d.ts +208 -0
- package/dist/core/goals-store.js +521 -0
- package/dist/core/goals-store.js.map +1 -0
- package/dist/core/local-endpoint-store.js +15 -11
- package/dist/core/local-endpoint-store.js.map +1 -1
- package/dist/core/plan-handoff.d.ts +8 -0
- package/dist/core/plan-handoff.js +11 -0
- package/dist/core/plan-handoff.js.map +1 -1
- package/dist/core/project-discovery.d.ts +7 -0
- package/dist/core/project-discovery.js +9 -3
- package/dist/core/project-discovery.js.map +1 -1
- package/dist/core/radio.d.ts +2 -3
- package/dist/core/radio.js.map +1 -1
- package/dist/core/session-manager.d.ts +7 -1
- package/dist/core/session-manager.js +17 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-storage.d.ts +3 -0
- package/dist/core/session-storage.js +8 -2
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/steroids.d.ts +8 -0
- package/dist/core/steroids.js +19 -3
- package/dist/core/steroids.js.map +1 -1
- package/dist/core/subagent-manager.d.ts +51 -0
- package/dist/core/subagent-manager.js +103 -16
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-store.js +2 -1
- package/dist/core/subagent-store.js.map +1 -1
- package/dist/goals-agent/goal-team.d.ts +2 -0
- package/dist/goals-agent/goal-team.js +83 -0
- package/dist/goals-agent/goal-team.js.map +1 -0
- package/dist/goals-agent/goals-agent.d.ts +90 -0
- package/dist/goals-agent/goals-agent.js +246 -0
- package/dist/goals-agent/goals-agent.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interactive.js +4 -3
- package/dist/interactive.js.map +1 -1
- package/dist/modes/acp-autopilot.d.ts +27 -0
- package/dist/modes/acp-autopilot.js +54 -0
- package/dist/modes/acp-autopilot.js.map +1 -0
- package/dist/modes/acp-goals.d.ts +48 -0
- package/dist/modes/acp-goals.js +103 -0
- package/dist/modes/acp-goals.js.map +1 -0
- package/dist/modes/acp-mode.d.ts +128 -3
- package/dist/modes/acp-mode.js +1082 -52
- package/dist/modes/acp-mode.js.map +1 -1
- package/dist/modes/subagent-worker-mode.d.ts +14 -0
- package/dist/modes/subagent-worker-mode.js +32 -1
- package/dist/modes/subagent-worker-mode.js.map +1 -1
- package/dist/system-prompt.d.ts +8 -0
- package/dist/system-prompt.js +21 -9
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/bash-read-evidence.d.ts +13 -0
- package/dist/tools/bash-read-evidence.js +48 -1
- package/dist/tools/bash-read-evidence.js.map +1 -1
- package/dist/tools/grep-scan.d.ts +96 -0
- package/dist/tools/grep-scan.js +283 -0
- package/dist/tools/grep-scan.js.map +1 -0
- package/dist/tools/grep.d.ts +10 -0
- package/dist/tools/grep.js +418 -10
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +7 -1
- package/dist/tools/index.js +10 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/read-tracker.d.ts +6 -12
- package/dist/tools/read-tracker.js +21 -36
- package/dist/tools/read-tracker.js.map +1 -1
- package/dist/tools/read.js +2 -2
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/subagent-control.js +22 -3
- package/dist/tools/subagent-control.js.map +1 -1
- package/dist/tools/write.js +110 -8
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts +5 -5
- package/dist/ui/components/InputArea.d.ts +2 -2
- package/dist/ui/components/InputArea.js +3 -3
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/ToolExecution.d.ts +2 -2
- package/dist/ui/hooks/useContextCompaction.js +38 -31
- package/dist/ui/hooks/useContextCompaction.js.map +1 -1
- package/dist/utils/format.d.ts +0 -4
- package/dist/utils/format.js +0 -7
- package/dist/utils/format.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/core/ask-user.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,GAAG,MAAM,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,GAAG,MAAM,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CACzC,gCAAgC,EAChC,+BAA+B,CAChC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,OAAO,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gCAAgC,CAAC;AACzF,CAAC;
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/core/ask-user.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
* One API-key option for a provider that splits auth across multiple distinct
|
|
4
|
-
* endpoints/credentials (currently only Xiaomi: Token Plan vs. API Credits).
|
|
5
|
-
* Each variant stores under its own auth.json key so a user can hold both at
|
|
6
|
-
* once — the model registry picks which one a given model resolves via
|
|
7
|
-
* `getAuthStorageKeys()`.
|
|
8
|
-
*/
|
|
9
|
-
export interface ApiKeyVariant {
|
|
10
|
-
/** Storage key in auth.json (distinct from `value` when multiple variants exist). */
|
|
11
|
-
key: string;
|
|
12
|
-
/** Display label, e.g. "Token Plan" or "API Credits". */
|
|
13
|
-
label: string;
|
|
14
|
-
/** Base URL stored alongside this variant's credential. */
|
|
15
|
-
baseUrl?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface AuthProviderMeta {
|
|
18
|
-
/** Stable provider id (matches the @prestyj/ai Provider union, plus storage keys). */
|
|
19
|
-
value: string;
|
|
20
|
-
/** Display name shown in the login list. */
|
|
21
|
-
label: string;
|
|
22
|
-
/** One-line model summary. */
|
|
23
|
-
description: string;
|
|
24
|
-
/** Supported auth methods, in preferred order (oauth first when both). */
|
|
25
|
-
methods: AuthMethod[];
|
|
26
|
-
/** Friendly label for the API key field (e.g. "Z.AI"). */
|
|
27
|
-
apiKeyLabel?: string;
|
|
28
|
-
/** Fixed base URL stored alongside an API key (e.g. Xiaomi's token plan). */
|
|
29
|
-
apiKeyBaseUrl?: string;
|
|
30
|
-
/**
|
|
31
|
-
* When a provider's API-key auth splits across multiple endpoints, the
|
|
32
|
-
* choices to present (in order). The first variant is the default. Absent
|
|
33
|
-
* for every provider with a single API-key credential.
|
|
34
|
-
*/
|
|
35
|
-
apiKeyVariants?: ApiKeyVariant[];
|
|
36
|
-
/**
|
|
37
|
-
* Per-method guidance overrides. Only providers whose methods differ in
|
|
38
|
-
* billing/entitlement (the dual-auth ones) need these; everything else is
|
|
39
|
-
* described generically by {@link describeAuthMethods}.
|
|
40
|
-
*/
|
|
41
|
-
methodDetails?: Partial<Record<AuthMethod, AuthMethodMeta>>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* What one auth method means for a provider, so both UIs can answer "which do I
|
|
45
|
-
* pick?" without hardcoding provider knowledge in a component.
|
|
46
|
-
*/
|
|
47
|
-
export interface AuthMethodMeta {
|
|
48
|
-
method: AuthMethod;
|
|
49
|
-
/** Button/row label, e.g. "Sign in with Grok (SuperGrok / X Premium)". */
|
|
50
|
-
label: string;
|
|
51
|
-
/** What the user spends on this method. */
|
|
52
|
-
billing: string;
|
|
53
|
-
/** When to choose it. */
|
|
54
|
-
when: string;
|
|
55
|
-
/** Prerequisite the user must already have, if any. */
|
|
56
|
-
requires?: string;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Every provider a user can connect, in login-screen order. `description`
|
|
60
|
-
* lists that provider's models and feeds both the CLI login screen and the
|
|
61
|
-
* app's provider list, so `auth-providers.test.ts` pins each one to the model
|
|
62
|
-
* registry — a registry change that isn't reflected here fails the suite.
|
|
63
|
-
*/
|
|
64
|
-
export declare const AUTH_PROVIDERS: AuthProviderMeta[];
|
|
65
|
-
export declare function getAuthProvider(value: string): AuthProviderMeta | undefined;
|
|
66
|
-
/**
|
|
67
|
-
* Per-method guidance for a provider, in resolution order. Providers with a
|
|
68
|
-
* single method get a generic description; the dual-auth ones (Kimi, Grok) carry
|
|
69
|
-
* explicit `methodDetails` because the choice changes what the user is billed.
|
|
70
|
-
*/
|
|
71
|
-
export declare function describeAuthMethods(provider: string): AuthMethodMeta[];
|
|
72
|
-
/**
|
|
73
|
-
* How the runtime picks between two connected methods, phrased for the UI. Only
|
|
74
|
-
* dual-auth providers have a choice to explain; everything else returns
|
|
75
|
-
* undefined so callers can omit the note entirely.
|
|
76
|
-
*
|
|
77
|
-
* Keep this wording in sync with AuthStorage's actual resolution order in
|
|
78
|
-
* @prestyj/core (`DUAL_AUTH_PROVIDERS`) — it is the user-facing description of it.
|
|
79
|
-
*/
|
|
80
|
-
export declare function authPriorityNote(provider: string): string | undefined;
|
|
1
|
+
export { AUTH_PROVIDERS, getAuthProvider, describeAuthMethods, authPriorityNote, } from "@prestyj/core";
|
|
2
|
+
export type { AuthMethod, ApiKeyVariant, AuthProviderMeta, AuthMethodMeta } from "@prestyj/core";
|
|
@@ -1,184 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { XIAOMI_CREDITS_KEY, dualAuthProvider } from "@prestyj/core";
|
|
6
|
-
/**
|
|
7
|
-
* Every provider a user can connect, in login-screen order. `description`
|
|
8
|
-
* lists that provider's models and feeds both the CLI login screen and the
|
|
9
|
-
* app's provider list, so `auth-providers.test.ts` pins each one to the model
|
|
10
|
-
* registry — a registry change that isn't reflected here fails the suite.
|
|
11
|
-
*/
|
|
12
|
-
export const AUTH_PROVIDERS = [
|
|
13
|
-
{
|
|
14
|
-
value: "anthropic",
|
|
15
|
-
label: "Anthropic",
|
|
16
|
-
description: "Claude Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5",
|
|
17
|
-
methods: ["oauth"],
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
value: "openai",
|
|
21
|
-
label: "OpenAI",
|
|
22
|
-
description: "GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna",
|
|
23
|
-
methods: ["oauth"],
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
value: "gemini",
|
|
27
|
-
label: "Gemini",
|
|
28
|
-
description: "Gemini 3.8 Flash, 3.5 Flash Lite, 3.7 Flash, 3.1 Flash Lite, 3.5 Flash, 3.1 Pro (Preview)",
|
|
29
|
-
methods: ["oauth"],
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
value: "xai",
|
|
33
|
-
label: "xAI (Grok)",
|
|
34
|
-
description: "Grok 4.7 · OAuth or API key",
|
|
35
|
-
methods: ["oauth", "apikey"],
|
|
36
|
-
apiKeyLabel: "xAI",
|
|
37
|
-
methodDetails: {
|
|
38
|
-
oauth: {
|
|
39
|
-
method: "oauth",
|
|
40
|
-
label: "Sign in with Grok",
|
|
41
|
-
billing: "Included with SuperGrok or X Premium.",
|
|
42
|
-
when: "",
|
|
43
|
-
},
|
|
44
|
-
apikey: {
|
|
45
|
-
method: "apikey",
|
|
46
|
-
label: "xAI API key",
|
|
47
|
-
billing: "Pay-per-token on console.x.ai credits.",
|
|
48
|
-
when: "",
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
value: "moonshot",
|
|
54
|
-
label: "Moonshot",
|
|
55
|
-
description: "Kimi K3, K2.8 Preview (Kimi sign-in), K2.7 Code, K2.7 Code HighSpeed · OAuth or API key",
|
|
56
|
-
methods: ["oauth", "apikey"],
|
|
57
|
-
apiKeyLabel: "Moonshot",
|
|
58
|
-
methodDetails: {
|
|
59
|
-
oauth: {
|
|
60
|
-
method: "oauth",
|
|
61
|
-
label: "Sign in with Kimi",
|
|
62
|
-
billing: "Included with a Kimi For Coding plan.",
|
|
63
|
-
when: "",
|
|
64
|
-
},
|
|
65
|
-
apikey: {
|
|
66
|
-
method: "apikey",
|
|
67
|
-
label: "Moonshot API key",
|
|
68
|
-
billing: "Pay-per-token on Moonshot credits.",
|
|
69
|
-
when: "",
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
value: "glm",
|
|
75
|
-
label: "Z.AI (GLM)",
|
|
76
|
-
description: "GLM-5.3, GLM-5.3-Flash",
|
|
77
|
-
methods: ["apikey"],
|
|
78
|
-
apiKeyLabel: "Z.AI",
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
value: "minimax",
|
|
82
|
-
label: "MiniMax",
|
|
83
|
-
description: "MiniMax M3",
|
|
84
|
-
methods: ["apikey"],
|
|
85
|
-
apiKeyLabel: "MiniMax",
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
value: "xiaomi",
|
|
89
|
-
label: "Xiaomi (MiMo)",
|
|
90
|
-
description: "MiMo-V2.6-Pro, MiMo-V2.6-Flash, MiMo-V2.6-Pro-UltraSpeed · Token Plan or API Credits",
|
|
91
|
-
methods: ["apikey"],
|
|
92
|
-
apiKeyLabel: "Xiaomi MiMo",
|
|
93
|
-
apiKeyBaseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
|
|
94
|
-
apiKeyVariants: [
|
|
95
|
-
{
|
|
96
|
-
key: "xiaomi",
|
|
97
|
-
label: "Token Plan",
|
|
98
|
-
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
key: XIAOMI_CREDITS_KEY,
|
|
102
|
-
label: "API Credits (required for UltraSpeed)",
|
|
103
|
-
baseUrl: "https://api.xiaomimimo.com/v1",
|
|
104
|
-
},
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
value: "deepseek",
|
|
109
|
-
label: "DeepSeek",
|
|
110
|
-
description: "DeepSeek V4 Pro, V4.1 Flash",
|
|
111
|
-
methods: ["apikey"],
|
|
112
|
-
apiKeyLabel: "DeepSeek",
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
value: "sakana",
|
|
116
|
-
label: "Sakana (Fugu)",
|
|
117
|
-
description: "Fugu, Fugu Max, Fugu Ultra",
|
|
118
|
-
methods: ["apikey"],
|
|
119
|
-
apiKeyLabel: "Sakana",
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
value: "openrouter",
|
|
123
|
-
label: "OpenRouter",
|
|
124
|
-
description: "Qwen3.8 Max · multi-provider gateway",
|
|
125
|
-
methods: ["apikey"],
|
|
126
|
-
apiKeyLabel: "OpenRouter",
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
value: "huggingface",
|
|
130
|
-
label: "Hugging Face",
|
|
131
|
-
description: "Kimi K2.7 Code, DeepSeek V4.1 Flash, GPT-OSS 120B",
|
|
132
|
-
methods: ["apikey"],
|
|
133
|
-
apiKeyLabel: "Hugging Face",
|
|
134
|
-
},
|
|
135
|
-
];
|
|
136
|
-
export function getAuthProvider(value) {
|
|
137
|
-
return AUTH_PROVIDERS.find((p) => p.value === value);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Per-method guidance for a provider, in resolution order. Providers with a
|
|
141
|
-
* single method get a generic description; the dual-auth ones (Kimi, Grok) carry
|
|
142
|
-
* explicit `methodDetails` because the choice changes what the user is billed.
|
|
143
|
-
*/
|
|
144
|
-
export function describeAuthMethods(provider) {
|
|
145
|
-
const meta = getAuthProvider(provider);
|
|
146
|
-
if (!meta)
|
|
147
|
-
return [];
|
|
148
|
-
return meta.methods.map((method) => {
|
|
149
|
-
const override = meta.methodDetails?.[method];
|
|
150
|
-
// Copy rather than hand back the table entry itself: callers serialize this
|
|
151
|
-
// alongside the provider meta, and a shared reference appearing twice in one
|
|
152
|
-
// payload trips the sidecar's cycle-safe JSON encoder ([CIRCULAR]).
|
|
153
|
-
if (override)
|
|
154
|
-
return { ...override };
|
|
155
|
-
return method === "oauth"
|
|
156
|
-
? {
|
|
157
|
-
method,
|
|
158
|
-
label: `Sign in with ${meta.label}`,
|
|
159
|
-
billing: "Uses your existing plan with this provider.",
|
|
160
|
-
when: "",
|
|
161
|
-
}
|
|
162
|
-
: {
|
|
163
|
-
method,
|
|
164
|
-
label: `${meta.apiKeyLabel ?? meta.label} API key`,
|
|
165
|
-
billing: "Pay-per-token on this provider's API credits.",
|
|
166
|
-
when: "",
|
|
167
|
-
};
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* How the runtime picks between two connected methods, phrased for the UI. Only
|
|
172
|
-
* dual-auth providers have a choice to explain; everything else returns
|
|
173
|
-
* undefined so callers can omit the note entirely.
|
|
174
|
-
*
|
|
175
|
-
* Keep this wording in sync with AuthStorage's actual resolution order in
|
|
176
|
-
* @prestyj/core (`DUAL_AUTH_PROVIDERS`) — it is the user-facing description of it.
|
|
177
|
-
*/
|
|
178
|
-
export function authPriorityNote(provider) {
|
|
179
|
-
const dual = dualAuthProvider(provider);
|
|
180
|
-
if (!dual)
|
|
181
|
-
return undefined;
|
|
182
|
-
return `Uses ${dual.oauthLabel} first; the ${dual.apiKeyLabel} takes over when it runs out, then switches back.`;
|
|
183
|
-
}
|
|
1
|
+
// Moved to @prestyj/core. This shim re-exports it so existing relative
|
|
2
|
+
// imports (`./auth-providers.js`) and the `./core/auth` export keep resolving
|
|
3
|
+
// unchanged.
|
|
4
|
+
export { AUTH_PROVIDERS, getAuthProvider, describeAuthMethods, authPriorityNote, } from "@prestyj/core";
|
|
184
5
|
//# sourceMappingURL=auth-providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-providers.js","sourceRoot":"","sources":["../../src/core/auth-providers.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"auth-providers.js","sourceRoot":"","sources":["../../src/core/auth-providers.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,8EAA8E;AAC9E,aAAa;AACb,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CacheRetention, type PreparedContext, type Usage } from "@prestyj/ai";
|
|
2
2
|
import { type CacheTouch } from "./cache-expiry.js";
|
|
3
3
|
export interface CacheRequestObservation {
|
|
4
4
|
provider: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { opensTurn, } from "@prestyj/ai";
|
|
2
3
|
import { resolveCacheTtl } from "./cache-expiry.js";
|
|
3
4
|
/** Digests never leave this instance. Canonical object keys avoid spurious edits on resume. */
|
|
4
5
|
function digest(value) {
|
|
@@ -112,7 +113,7 @@ export class CacheDiagnostics {
|
|
|
112
113
|
firstEdit = -1;
|
|
113
114
|
let lastUser = -1;
|
|
114
115
|
context.messages.forEach((message, index) => {
|
|
115
|
-
if (message
|
|
116
|
+
if (opensTurn(message))
|
|
116
117
|
lastUser = index;
|
|
117
118
|
});
|
|
118
119
|
let thinkingPrefixRiskBlocks = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-diagnostics.js","sourceRoot":"","sources":["../../src/core/cache-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cache-diagnostics.js","sourceRoot":"","sources":["../../src/core/cache-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,16 @@ import type { Message } from "@prestyj/ai";
|
|
|
28
28
|
export declare const PRUNE_PROTECT_TOKENS = 40000;
|
|
29
29
|
export declare const PRUNE_MINIMUM_TOKENS = 20000;
|
|
30
30
|
export declare const PRUNE_PROTECT_TOOL_BATCHES = 2;
|
|
31
|
+
/**
|
|
32
|
+
* Pruning starts once the active context reaches this share of the compaction
|
|
33
|
+
* trigger. Below it the rewrite costs more than it saves: each prune re-sends
|
|
34
|
+
* the whole history after the first stub uncached (a live goal paid ~70–100k
|
|
35
|
+
* tokens per prune to free ~20k at 117k of a 1M window), and freed tokens only
|
|
36
|
+
* matter once compaction is near.
|
|
37
|
+
*/
|
|
38
|
+
export declare const PRUNE_START_FRACTION = 0.5;
|
|
39
|
+
/** Whether stale tool output is worth pruning at this context size. */
|
|
40
|
+
export declare function shouldPruneToolResults(activeTokens: number, compactionTarget: number): boolean;
|
|
31
41
|
/** Tools whose output is instruction, not reproducible data — never pruned. */
|
|
32
42
|
export declare const PRUNE_PROTECTED_TOOLS: Set<string>;
|
|
33
43
|
export interface PruneOptions {
|
|
@@ -29,6 +29,18 @@ import { estimateTokens } from "./token-estimator.js";
|
|
|
29
29
|
export const PRUNE_PROTECT_TOKENS = 40_000;
|
|
30
30
|
export const PRUNE_MINIMUM_TOKENS = 20_000;
|
|
31
31
|
export const PRUNE_PROTECT_TOOL_BATCHES = 2;
|
|
32
|
+
/**
|
|
33
|
+
* Pruning starts once the active context reaches this share of the compaction
|
|
34
|
+
* trigger. Below it the rewrite costs more than it saves: each prune re-sends
|
|
35
|
+
* the whole history after the first stub uncached (a live goal paid ~70–100k
|
|
36
|
+
* tokens per prune to free ~20k at 117k of a 1M window), and freed tokens only
|
|
37
|
+
* matter once compaction is near.
|
|
38
|
+
*/
|
|
39
|
+
export const PRUNE_START_FRACTION = 0.5;
|
|
40
|
+
/** Whether stale tool output is worth pruning at this context size. */
|
|
41
|
+
export function shouldPruneToolResults(activeTokens, compactionTarget) {
|
|
42
|
+
return activeTokens >= compactionTarget * PRUNE_START_FRACTION;
|
|
43
|
+
}
|
|
32
44
|
/** Tools whose output is instruction, not reproducible data — never pruned. */
|
|
33
45
|
export const PRUNE_PROTECTED_TOOLS = new Set(["skill"]);
|
|
34
46
|
const PRUNE_MARKER = "[Pruned:";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-result-pruner.js","sourceRoot":"","sources":["../../../src/core/compaction/tool-result-pruner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-result-pruner.js","sourceRoot":"","sources":["../../../src/core/compaction/tool-result-pruner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A child's brief with files its parent already read appended, so the child
|
|
3
|
+
* starts with their current contents instead of spending turns reading them
|
|
4
|
+
* again. Paths resolve against the child's folder. A file that's missing,
|
|
5
|
+
* binary or past the limits is named with the reason, never fatal: the child
|
|
6
|
+
* can still read it itself. Returns the brief unchanged when there are none.
|
|
7
|
+
*/
|
|
8
|
+
export declare function withContextFiles(task: string, files: readonly string[], cwd: string): Promise<string>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/** The most of one file handed over; longer files are cut and say so. */
|
|
4
|
+
const FILE_LIMIT = 24_000;
|
|
5
|
+
/** The most handed over in all; files past it are named but not included. */
|
|
6
|
+
const TOTAL_LIMIT = 60_000;
|
|
7
|
+
/**
|
|
8
|
+
* A child's brief with files its parent already read appended, so the child
|
|
9
|
+
* starts with their current contents instead of spending turns reading them
|
|
10
|
+
* again. Paths resolve against the child's folder. A file that's missing,
|
|
11
|
+
* binary or past the limits is named with the reason, never fatal: the child
|
|
12
|
+
* can still read it itself. Returns the brief unchanged when there are none.
|
|
13
|
+
*/
|
|
14
|
+
export async function withContextFiles(task, files, cwd) {
|
|
15
|
+
if (files.length === 0)
|
|
16
|
+
return task;
|
|
17
|
+
const parts = [];
|
|
18
|
+
let used = 0;
|
|
19
|
+
for (const file of [...new Set(files)]) {
|
|
20
|
+
const full = path.resolve(cwd, file);
|
|
21
|
+
if (used >= TOTAL_LIMIT) {
|
|
22
|
+
parts.push(`### ${full}\n(not included: over the size limit; read it if you need it)`);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
let text;
|
|
26
|
+
try {
|
|
27
|
+
text = await fs.readFile(full, "utf8");
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
parts.push(`### ${full}\n(not included: couldn't be read)`);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (text.includes("\u0000")) {
|
|
34
|
+
parts.push(`### ${full}\n(not included: binary file)`);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const room = Math.min(FILE_LIMIT, TOTAL_LIMIT - used);
|
|
38
|
+
const cut = text.length > room;
|
|
39
|
+
const shown = cut ? text.slice(0, room) : text;
|
|
40
|
+
used += shown.length;
|
|
41
|
+
const fence = shown.includes("```") ? "````" : "```";
|
|
42
|
+
parts.push(`### ${full}${cut ? ` (first ${room} of ${text.length} characters; read the rest if you need it)` : ""}\n${fence}\n${shown}${shown.endsWith("\n") ? "" : "\n"}${fence}`);
|
|
43
|
+
}
|
|
44
|
+
return `${task}\n\n## Files already read for you\nTheir current contents, so you don't need to read them again before working on them.\n\n${parts.join("\n\n")}`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=context-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-files.js","sourceRoot":"","sources":["../../src/core/context-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,yEAAyE;AACzE,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,6EAA6E;AAC7E,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,KAAwB,EACxB,GAAW;IAEX,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,+DAA+D,CAAC,CAAC;YACvF,SAAS;QACX,CAAC;QACD,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,oCAAoC,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,+BAA+B,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACrD,KAAK,CAAC,IAAI,CACR,OAAO,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,MAAM,4CAA4C,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CACxK,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,IAAI,8HAA8H,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACnK,CAAC"}
|
|
@@ -10,3 +10,9 @@ export interface CustomCommand {
|
|
|
10
10
|
* and the body becomes the prompt injected into the agent.
|
|
11
11
|
*/
|
|
12
12
|
export declare function loadCustomCommands(cwd: string): Promise<CustomCommand[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Custom commands from every workspace root: the project first, then each
|
|
15
|
+
* folder added to it (`/add-dir`, a goal's attached repos). A name already
|
|
16
|
+
* taken by an earlier root is skipped, so the project's own command wins.
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadWorkspaceCustomCommands(roots: readonly string[]): Promise<CustomCommand[]>;
|
|
@@ -37,4 +37,21 @@ export async function loadCustomCommands(cwd) {
|
|
|
37
37
|
}
|
|
38
38
|
return commands;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Custom commands from every workspace root: the project first, then each
|
|
42
|
+
* folder added to it (`/add-dir`, a goal's attached repos). A name already
|
|
43
|
+
* taken by an earlier root is skipped, so the project's own command wins.
|
|
44
|
+
*/
|
|
45
|
+
export async function loadWorkspaceCustomCommands(roots) {
|
|
46
|
+
const perRoot = await Promise.all(roots.map((root) => loadCustomCommands(root)));
|
|
47
|
+
const seen = new Set();
|
|
48
|
+
const commands = [];
|
|
49
|
+
for (const command of perRoot.flat()) {
|
|
50
|
+
if (seen.has(command.name))
|
|
51
|
+
continue;
|
|
52
|
+
seen.add(command.name);
|
|
53
|
+
commands.push(command);
|
|
54
|
+
}
|
|
55
|
+
return commands;
|
|
56
|
+
}
|
|
40
57
|
//# sourceMappingURL=custom-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-commands.js","sourceRoot":"","sources":["../../src/core/custom-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,yCAAyC,IAAI,EAAE;gBAClF,MAAM,EAAE,MAAM,CAAC,OAAO;gBACtB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"custom-commands.js","sourceRoot":"","sources":["../../src/core/custom-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,yCAAyC,IAAI,EAAE;gBAClF,MAAM,EAAE,MAAM,CAAC,OAAO;gBACtB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/core/env-delta.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Message } from "@prestyj/ai";
|
|
2
|
-
import type
|
|
2
|
+
import { type SystemPromptEnvironment } from "../system-prompt.js";
|
|
3
|
+
import type { LanguageId } from "./language-detector.js";
|
|
3
4
|
/**
|
|
4
5
|
* Keep the model's picture of its environment true without breaking the cache.
|
|
5
6
|
*
|
|
@@ -24,3 +25,10 @@ export declare function fingerprintEnvironment(env: SystemPromptEnvironment): st
|
|
|
24
25
|
* they agree — the dedupe that keeps an unchanged environment at zero tokens.
|
|
25
26
|
*/
|
|
26
27
|
export declare function buildEnvDeltaMessage(rendered: SystemPromptEnvironment, current: SystemPromptEnvironment): Message | null;
|
|
28
|
+
/**
|
|
29
|
+
* Style packs for languages that appeared after the system prompt was cached
|
|
30
|
+
* (e.g. the previous task scaffolded a TypeScript project). Same append-only
|
|
31
|
+
* idea as the environment update: re-rendering the prompt to add a pack would
|
|
32
|
+
* invalidate every cached byte after it. `null` when nothing renders.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildLanguageUpdateMessage(languages: Set<LanguageId>, cwd: string): Message | null;
|
package/dist/core/env-delta.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { renderLanguageGuidance } from "../system-prompt.js";
|
|
1
2
|
/**
|
|
2
3
|
* Keep the model's picture of its environment true without breaking the cache.
|
|
3
4
|
*
|
|
@@ -62,4 +63,23 @@ export function buildEnvDeltaMessage(rendered, current) {
|
|
|
62
63
|
"\nTrust them over anything earlier that disagrees. Do not restate this note; just proceed.",
|
|
63
64
|
};
|
|
64
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Style packs for languages that appeared after the system prompt was cached
|
|
68
|
+
* (e.g. the previous task scaffolded a TypeScript project). Same append-only
|
|
69
|
+
* idea as the environment update: re-rendering the prompt to add a pack would
|
|
70
|
+
* invalidate every cached byte after it. `null` when nothing renders.
|
|
71
|
+
*/
|
|
72
|
+
export function buildLanguageUpdateMessage(languages, cwd) {
|
|
73
|
+
const sections = renderLanguageGuidance(languages, cwd);
|
|
74
|
+
if (sections.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
return {
|
|
77
|
+
role: "user",
|
|
78
|
+
provenance: { source: "runtime", kind: "notification", visibility: "hidden" },
|
|
79
|
+
content: "Project update: new languages are now in use. Apply these defaults to code you write " +
|
|
80
|
+
"from here on, the same way as any style guidance in your instructions.\n\n" +
|
|
81
|
+
sections.join("\n\n") +
|
|
82
|
+
"\n\nDo not restate this note; just proceed.",
|
|
83
|
+
};
|
|
84
|
+
}
|
|
65
85
|
//# sourceMappingURL=env-delta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-delta.js","sourceRoot":"","sources":["../../src/core/env-delta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env-delta.js","sourceRoot":"","sources":["../../src/core/env-delta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MessageProvenance } from "@prestyj/ai";
|
|
2
|
+
import { type GoalRecord } from "./goals-store.js";
|
|
3
|
+
import type { SessionManager } from "./session-manager.js";
|
|
4
|
+
/** The kickoff/resume instruction is runtime-authored and never shown as a user bubble. */
|
|
5
|
+
export declare const GOAL_RUNTIME_PROVENANCE: MessageProvenance;
|
|
6
|
+
/** One row of the app's goal list. */
|
|
7
|
+
export interface GoalSummary {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
goal: string;
|
|
11
|
+
context: GoalRecord["context"];
|
|
12
|
+
path: string;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
lastActiveMs: number;
|
|
15
|
+
lastActiveDisplay: string;
|
|
16
|
+
/** Newest non-empty session to resume; null opens a fresh coordinator session. */
|
|
17
|
+
latestSessionPath: string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Where the goal stands, for the goal list: briefing (not started yet),
|
|
20
|
+
* running (working right now), paused (by the user), or idle (started,
|
|
21
|
+
* not working: done, or waiting to be opened again).
|
|
22
|
+
*/
|
|
23
|
+
status: "briefing" | "running" | "paused" | "interrupted" | "idle";
|
|
24
|
+
}
|
|
25
|
+
/** A summary plus the newest session's id, for callers that address sessions by id. */
|
|
26
|
+
export type GoalSummaryWithSessionId = GoalSummary & {
|
|
27
|
+
latestSessionId: string | null;
|
|
28
|
+
};
|
|
29
|
+
/** A goal's status for the list (see GoalSummary.status). */
|
|
30
|
+
export declare function goalListStatus(record: GoalRecord, busy: boolean, cutOff?: boolean): GoalSummary["status"];
|
|
31
|
+
/** Summarize one goal for a list, from its record and its coordinator sessions. */
|
|
32
|
+
export declare function summarizeGoal(sessions: SessionManager, dir: string, record: GoalRecord, busy?: boolean): Promise<GoalSummaryWithSessionId>;
|